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