2 // Copyright Peter Dimov 2001
3 // Copyright Aleksey Gurtovoy 2001-2004
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)
10 // *Preprocessed* version of the main "basic_bind.hpp" header
11 // -- DO NOT modify by hand!
13 namespace boost { namespace mpl {
18 typename T, typename U1, typename U2, typename U3, typename U4
21 struct resolve_bind_arg
27 int N, typename U1, typename U2, typename U3, typename U4, typename U5
29 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
31 typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
42 typename U1, typename U2, typename U3, typename U4, typename U5
47 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
50 typedef typename apply_wrap0<
60 typename F, typename U1, typename U2, typename U3, typename U4
63 struct resolve_bind_arg<
64 bind0<F>, U1, U2, U3, U4, U5
68 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
73 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
74 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
77 typename F, typename T1
82 typename U1, typename U2, typename U3, typename U4, typename U5
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;
91 typedef typename apply_wrap1<
102 typename F, typename T1, typename U1, typename U2, typename U3
103 , typename U4, typename U5
105 struct resolve_bind_arg<
106 bind1< F,T1 >, U1, U2, U3, U4, U5
109 typedef bind1< F,T1 > f_;
110 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
115 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
116 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
119 typename F, typename T1, typename T2
124 typename U1, typename U2, typename U3, typename U4, typename U5
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;
134 typedef typename apply_wrap2<
136 , typename t1::type, typename t2::type
145 typename F, typename T1, typename T2, typename U1, typename U2
146 , typename U3, typename U4, typename U5
148 struct resolve_bind_arg<
149 bind2< F,T1,T2 >, U1, U2, U3, U4, U5
152 typedef bind2< F,T1,T2 > f_;
153 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
158 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
159 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
162 typename F, typename T1, typename T2, typename T3
167 typename U1, typename U2, typename U3, typename U4, typename U5
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;
178 typedef typename apply_wrap3<
180 , typename t1::type, typename t2::type, typename t3::type
189 typename F, typename T1, typename T2, typename T3, typename U1
190 , typename U2, typename U3, typename U4, typename U5
192 struct resolve_bind_arg<
193 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
196 typedef bind3< F,T1,T2,T3 > f_;
197 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
202 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
203 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
206 typename F, typename T1, typename T2, typename T3, typename T4
211 typename U1, typename U2, typename U3, typename U4, typename U5
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;
223 typedef typename apply_wrap4<
225 , typename t1::type, typename t2::type, typename t3::type
235 typename F, typename T1, typename T2, typename T3, typename T4
236 , typename U1, typename U2, typename U3, typename U4, typename U5
238 struct resolve_bind_arg<
239 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
242 typedef bind4< F,T1,T2,T3,T4 > f_;
243 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
248 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
249 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
252 typename F, typename T1, typename T2, typename T3, typename T4
258 typename U1, typename U2, typename U3, typename U4, typename U5
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;
271 typedef typename apply_wrap5<
273 , typename t1::type, typename t2::type, typename t3::type
274 , typename t4::type, typename t5::type
283 typename F, typename T1, typename T2, typename T3, typename T4
284 , typename T5, typename U1, typename U2, typename U3, typename U4
287 struct resolve_bind_arg<
288 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
291 typedef bind5< F,T1,T2,T3,T4,T5 > f_;
292 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
297 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
298 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)