blob: 4083ade0f01b674ea811487f0e88aa8211b5f649 [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001
2// Copyright Peter Dimov 2001
3// Copyright Aleksey Gurtovoy 2001-2004
4//
5// Distributed under the Boost Software License, Version 1.0.
6// (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//
9
10// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
11// -- DO NOT modify by hand!
12
13namespace ndnboost { namespace mpl {
14
15namespace aux {
16
17template<
18 typename T, typename U1, typename U2, typename U3, typename U4
19 , typename U5
20 >
21struct resolve_bind_arg
22{
23 typedef T type;
24};
25
26template<
27 int N, typename U1, typename U2, typename U3, typename U4, typename U5
28 >
29struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
30{
31 typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
32};
33
34} // namespace aux
35
36template<
37 typename F
38 >
39struct bind0
40{
41 template<
42 typename U1 = na, typename U2 = na, typename U3 = na
43 , typename U4 = na, typename U5 = na
44 >
45 struct apply
46 {
47 private:
48 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
49
50 public:
51 typedef typename apply_wrap0<
52 f_
53 >::type type;
54
55 };
56};
57
58namespace aux {
59
60template<
61 typename F, typename U1, typename U2, typename U3, typename U4
62 , typename U5
63 >
64struct resolve_bind_arg<
65 bind0<F>, U1, U2, U3, U4, U5
66 >
67{
68 typedef bind0<F> f_;
69 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
70};
71
72} // namespace aux
73
74BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
75BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
76
77template<
78 typename F, typename T1
79 >
80struct bind1
81{
82 template<
83 typename U1 = na, typename U2 = na, typename U3 = na
84 , typename U4 = na, typename U5 = na
85 >
86 struct apply
87 {
88 private:
89 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
90 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
91
92 public:
93 typedef typename apply_wrap1<
94 f_
95 , typename t1::type
96 >::type type;
97
98 };
99};
100
101namespace aux {
102
103template<
104 typename F, typename T1, typename U1, typename U2, typename U3
105 , typename U4, typename U5
106 >
107struct resolve_bind_arg<
108 bind1< F,T1 >, U1, U2, U3, U4, U5
109 >
110{
111 typedef bind1< F,T1 > f_;
112 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
113};
114
115} // namespace aux
116
117BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
118BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
119
120template<
121 typename F, typename T1, typename T2
122 >
123struct bind2
124{
125 template<
126 typename U1 = na, typename U2 = na, typename U3 = na
127 , typename U4 = na, typename U5 = na
128 >
129 struct apply
130 {
131 private:
132 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
133 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
134 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
135
136 public:
137 typedef typename apply_wrap2<
138 f_
139 , typename t1::type, typename t2::type
140 >::type type;
141
142 };
143};
144
145namespace aux {
146
147template<
148 typename F, typename T1, typename T2, typename U1, typename U2
149 , typename U3, typename U4, typename U5
150 >
151struct resolve_bind_arg<
152 bind2< F,T1,T2 >, U1, U2, U3, U4, U5
153 >
154{
155 typedef bind2< F,T1,T2 > f_;
156 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
157};
158
159} // namespace aux
160
161BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
162BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
163
164template<
165 typename F, typename T1, typename T2, typename T3
166 >
167struct bind3
168{
169 template<
170 typename U1 = na, typename U2 = na, typename U3 = na
171 , typename U4 = na, typename U5 = na
172 >
173 struct apply
174 {
175 private:
176 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
177 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
178 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
179 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
180
181 public:
182 typedef typename apply_wrap3<
183 f_
184 , typename t1::type, typename t2::type, typename t3::type
185 >::type type;
186
187 };
188};
189
190namespace aux {
191
192template<
193 typename F, typename T1, typename T2, typename T3, typename U1
194 , typename U2, typename U3, typename U4, typename U5
195 >
196struct resolve_bind_arg<
197 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
198 >
199{
200 typedef bind3< F,T1,T2,T3 > f_;
201 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
202};
203
204} // namespace aux
205
206BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
207BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
208
209template<
210 typename F, typename T1, typename T2, typename T3, typename T4
211 >
212struct bind4
213{
214 template<
215 typename U1 = na, typename U2 = na, typename U3 = na
216 , typename U4 = na, typename U5 = na
217 >
218 struct apply
219 {
220 private:
221 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
222 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
223 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
224 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
225 typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
226
227 public:
228 typedef typename apply_wrap4<
229 f_
230 , typename t1::type, typename t2::type, typename t3::type
231 , typename t4::type
232 >::type type;
233
234 };
235};
236
237namespace aux {
238
239template<
240 typename F, typename T1, typename T2, typename T3, typename T4
241 , typename U1, typename U2, typename U3, typename U4, typename U5
242 >
243struct resolve_bind_arg<
244 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
245 >
246{
247 typedef bind4< F,T1,T2,T3,T4 > f_;
248 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
249};
250
251} // namespace aux
252
253BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
254BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
255
256template<
257 typename F, typename T1, typename T2, typename T3, typename T4
258 , typename T5
259 >
260struct bind5
261{
262 template<
263 typename U1 = na, typename U2 = na, typename U3 = na
264 , typename U4 = na, typename U5 = na
265 >
266 struct apply
267 {
268 private:
269 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
270 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
271 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
272 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
273 typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
274 typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
275
276 public:
277 typedef typename apply_wrap5<
278 f_
279 , typename t1::type, typename t2::type, typename t3::type
280 , typename t4::type, typename t5::type
281 >::type type;
282
283 };
284};
285
286namespace aux {
287
288template<
289 typename F, typename T1, typename T2, typename T3, typename T4
290 , typename T5, typename U1, typename U2, typename U3, typename U4
291 , typename U5
292 >
293struct resolve_bind_arg<
294 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
295 >
296{
297 typedef bind5< F,T1,T2,T3,T4,T5 > f_;
298 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
299};
300
301} // namespace aux
302
303BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
304BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
305}}
306