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 "boost/mpl/aux_/basic_bind.hpp" header
11 // -- DO NOT modify by hand!
13 namespace boost { namespace mpl {
17 struct resolve_arg_impl
20 typename T, typename U1, typename U2, typename U3
21 , typename U4, typename U5
30 struct resolve_arg_impl<true>
33 typename T, typename U1, typename U2, typename U3
34 , typename U4, typename U5
38 typedef typename apply_wrap5<
45 template< typename T > struct is_bind_template;
48 typename T, typename U1, typename U2, typename U3, typename U4
51 struct resolve_bind_arg
52 : resolve_arg_impl< is_bind_template<T>::value >
53 ::template result_< T,U1,U2,U3,U4,U5 >
57 template< int arity_ > struct bind_chooser;
59 aux::no_tag is_bind_helper(...);
60 template< typename T > aux::no_tag is_bind_helper(protect<T>*);
63 aux::yes_tag is_bind_helper(arg<N>*);
65 template< bool is_ref_ = true >
66 struct is_bind_template_impl
68 template< typename T > struct result_
70 BOOST_STATIC_CONSTANT(bool, value = false);
75 struct is_bind_template_impl<false>
77 template< typename T > struct result_
79 BOOST_STATIC_CONSTANT(bool, value =
80 sizeof(aux::is_bind_helper(static_cast<T*>(0)))
81 == sizeof(aux::yes_tag)
86 template< typename T > struct is_bind_template
87 : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
100 typename U1 = na, typename U2 = na, typename U3 = na
101 , typename U4 = na, typename U5 = na
106 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
109 typedef typename apply_wrap0<
122 is_bind_helper(bind0<F>*);
126 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
127 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
130 typename F, typename T1
135 typename U1 = na, typename U2 = na, typename U3 = na
136 , typename U4 = na, typename U5 = na
141 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
142 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
145 typedef typename apply_wrap1<
156 typename F, typename T1
159 is_bind_helper(bind1< F,T1 >*);
163 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
164 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
167 typename F, typename T1, typename T2
172 typename U1 = na, typename U2 = na, typename U3 = na
173 , typename U4 = na, typename U5 = na
178 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
179 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
180 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
183 typedef typename apply_wrap2<
185 , typename t1::type, typename t2::type
194 typename F, typename T1, typename T2
197 is_bind_helper(bind2< F,T1,T2 >*);
201 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
202 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
205 typename F, typename T1, typename T2, typename T3
210 typename U1 = na, typename U2 = na, typename U3 = na
211 , typename U4 = na, typename U5 = na
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;
222 typedef typename apply_wrap3<
224 , typename t1::type, typename t2::type, typename t3::type
233 typename F, typename T1, typename T2, typename T3
236 is_bind_helper(bind3< F,T1,T2,T3 >*);
240 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
241 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
244 typename F, typename T1, typename T2, typename T3, typename T4
249 typename U1 = na, typename U2 = na, typename U3 = na
250 , typename U4 = na, typename U5 = na
255 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
256 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
257 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
258 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
259 typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
262 typedef typename apply_wrap4<
264 , typename t1::type, typename t2::type, typename t3::type
274 typename F, typename T1, typename T2, typename T3, typename T4
277 is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
281 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
282 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
285 typename F, typename T1, typename T2, typename T3, typename T4
291 typename U1 = na, typename U2 = na, typename U3 = na
292 , typename U4 = na, typename U5 = na
297 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
298 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
299 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
300 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
301 typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
302 typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
305 typedef typename apply_wrap5<
307 , typename t1::type, typename t2::type, typename t3::type
308 , typename t4::type, typename t5::type
317 typename F, typename T1, typename T2, typename T3, typename T4
321 is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
325 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
326 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)