blob: acd054bd8e06d3b57a7cca79cd0827b861d57dea [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 the main "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, typename U2, typename U3, typename U4, typename U5
43 >
44 struct apply
45 {
46 private:
47 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
48
49 public:
50 typedef typename apply_wrap0<
51 f_
52 >::type type;
53
54 };
55};
56
57namespace aux {
58
59template<
60 typename F, typename U1, typename U2, typename U3, typename U4
61 , typename U5
62 >
63struct resolve_bind_arg<
64 bind0<F>, U1, U2, U3, U4, U5
65 >
66{
67 typedef bind0<F> f_;
68 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
69};
70
71} // namespace aux
72
73BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
74BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
75
76template<
77 typename F, typename T1
78 >
79struct bind1
80{
81 template<
82 typename U1, typename U2, typename U3, typename U4, typename U5
83 >
84 struct apply
85 {
86 private:
87 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
88 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
89
90 public:
91 typedef typename apply_wrap1<
92 f_
93 , typename t1::type
94 >::type type;
95
96 };
97};
98
99namespace aux {
100
101template<
102 typename F, typename T1, typename U1, typename U2, typename U3
103 , typename U4, typename U5
104 >
105struct resolve_bind_arg<
106 bind1< F,T1 >, U1, U2, U3, U4, U5
107 >
108{
109 typedef bind1< F,T1 > f_;
110 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
111};
112
113} // namespace aux
114
115BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
116BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
117
118template<
119 typename F, typename T1, typename T2
120 >
121struct bind2
122{
123 template<
124 typename U1, typename U2, typename U3, typename U4, typename U5
125 >
126 struct apply
127 {
128 private:
129 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
130 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
131 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
132
133 public:
134 typedef typename apply_wrap2<
135 f_
136 , typename t1::type, typename t2::type
137 >::type type;
138
139 };
140};
141
142namespace aux {
143
144template<
145 typename F, typename T1, typename T2, typename U1, typename U2
146 , typename U3, typename U4, typename U5
147 >
148struct resolve_bind_arg<
149 bind2< F,T1,T2 >, U1, U2, U3, U4, U5
150 >
151{
152 typedef bind2< F,T1,T2 > f_;
153 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
154};
155
156} // namespace aux
157
158BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
159BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
160
161template<
162 typename F, typename T1, typename T2, typename T3
163 >
164struct bind3
165{
166 template<
167 typename U1, typename U2, typename U3, typename U4, typename U5
168 >
169 struct apply
170 {
171 private:
172 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
173 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
174 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
175 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
176
177 public:
178 typedef typename apply_wrap3<
179 f_
180 , typename t1::type, typename t2::type, typename t3::type
181 >::type type;
182
183 };
184};
185
186namespace aux {
187
188template<
189 typename F, typename T1, typename T2, typename T3, typename U1
190 , typename U2, typename U3, typename U4, typename U5
191 >
192struct resolve_bind_arg<
193 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
194 >
195{
196 typedef bind3< F,T1,T2,T3 > f_;
197 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
198};
199
200} // namespace aux
201
202BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
203BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
204
205template<
206 typename F, typename T1, typename T2, typename T3, typename T4
207 >
208struct bind4
209{
210 template<
211 typename U1, typename U2, typename U3, typename U4, typename U5
212 >
213 struct apply
214 {
215 private:
216 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
217 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
218 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
219 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
220 typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
221
222 public:
223 typedef typename apply_wrap4<
224 f_
225 , typename t1::type, typename t2::type, typename t3::type
226 , typename t4::type
227 >::type type;
228
229 };
230};
231
232namespace aux {
233
234template<
235 typename F, typename T1, typename T2, typename T3, typename T4
236 , typename U1, typename U2, typename U3, typename U4, typename U5
237 >
238struct resolve_bind_arg<
239 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
240 >
241{
242 typedef bind4< F,T1,T2,T3,T4 > f_;
243 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
244};
245
246} // namespace aux
247
248BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
249BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
250
251template<
252 typename F, typename T1, typename T2, typename T3, typename T4
253 , typename T5
254 >
255struct bind5
256{
257 template<
258 typename U1, typename U2, typename U3, typename U4, typename U5
259 >
260 struct apply
261 {
262 private:
263 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
264 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
265 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
266 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
267 typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
268 typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
269
270 public:
271 typedef typename apply_wrap5<
272 f_
273 , typename t1::type, typename t2::type, typename t3::type
274 , typename t4::type, typename t5::type
275 >::type type;
276
277 };
278};
279
280namespace aux {
281
282template<
283 typename F, typename T1, typename T2, typename T3, typename T4
284 , typename T5, typename U1, typename U2, typename U3, typename U4
285 , typename U5
286 >
287struct resolve_bind_arg<
288 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
289 >
290{
291 typedef bind5< F,T1,T2,T3,T4,T5 > f_;
292 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
293};
294
295} // namespace aux
296
297BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
298BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
299}}
300