Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:40:59

0001 
0002 // Copyright Peter Dimov 2001
0003 // Copyright Aleksey Gurtovoy 2001-2004
0004 //
0005 // Distributed under the Boost Software License, Version 1.0. 
0006 // (See accompanying file LICENSE_1_0.txt or copy at 
0007 // http://www.boost.org/LICENSE_1_0.txt)
0008 //
0009 
0010 // *Preprocessed* version of the main "basic_bind.hpp" header
0011 // -- DO NOT modify by hand!
0012 
0013 namespace boost { namespace mpl {
0014 
0015 namespace aux {
0016 
0017 template<
0018       typename T, typename U1, typename U2, typename U3, typename U4
0019     , typename U5
0020     >
0021 struct resolve_bind_arg
0022 {
0023     typedef T type;
0024 };
0025 
0026 template<
0027       int N, typename U1, typename U2, typename U3, typename U4, typename U5
0028     >
0029 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
0030 {
0031     typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
0032 };
0033 
0034 } // namespace aux
0035 
0036 template<
0037       typename F
0038     >
0039 struct bind0
0040 {
0041     template<
0042           typename U1, typename U2, typename U3, typename U4, typename U5
0043         >
0044     struct apply
0045     {
0046      private:
0047         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
0048 
0049      public:
0050         typedef typename apply_wrap0<
0051               f_
0052             >::type type;
0053 
0054     };
0055 };
0056 
0057 namespace aux {
0058 
0059 template<
0060       typename F, typename U1, typename U2, typename U3, typename U4
0061     , typename U5
0062     >
0063 struct resolve_bind_arg<
0064       bind0<F>, U1, U2, U3, U4, U5
0065     >
0066 {
0067     typedef bind0<F> f_;
0068     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0069 };
0070 
0071 } // namespace aux
0072 
0073 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
0074 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
0075 
0076 template<
0077       typename F, typename T1
0078     >
0079 struct bind1
0080 {
0081     template<
0082           typename U1, typename U2, typename U3, typename U4, typename U5
0083         >
0084     struct apply
0085     {
0086      private:
0087         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
0088         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
0089 
0090      public:
0091         typedef typename apply_wrap1<
0092               f_
0093             , typename t1::type
0094             >::type type;
0095 
0096     };
0097 };
0098 
0099 namespace aux {
0100 
0101 template<
0102       typename F, typename T1, typename U1, typename U2, typename U3
0103     , typename U4, typename U5
0104     >
0105 struct resolve_bind_arg<
0106       bind1< F,T1 >, U1, U2, U3, U4, U5
0107     >
0108 {
0109     typedef bind1< F,T1 > f_;
0110     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0111 };
0112 
0113 } // namespace aux
0114 
0115 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
0116 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
0117 
0118 template<
0119       typename F, typename T1, typename T2
0120     >
0121 struct bind2
0122 {
0123     template<
0124           typename U1, typename U2, typename U3, typename U4, typename U5
0125         >
0126     struct apply
0127     {
0128      private:
0129         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
0130         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
0131         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
0132 
0133      public:
0134         typedef typename apply_wrap2<
0135               f_
0136             , typename t1::type, typename t2::type
0137             >::type type;
0138 
0139     };
0140 };
0141 
0142 namespace aux {
0143 
0144 template<
0145       typename F, typename T1, typename T2, typename U1, typename U2
0146     , typename U3, typename U4, typename U5
0147     >
0148 struct resolve_bind_arg<
0149       bind2< F,T1,T2 >, U1, U2, U3, U4, U5
0150     >
0151 {
0152     typedef bind2< F,T1,T2 > f_;
0153     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0154 };
0155 
0156 } // namespace aux
0157 
0158 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
0159 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
0160 
0161 template<
0162       typename F, typename T1, typename T2, typename T3
0163     >
0164 struct bind3
0165 {
0166     template<
0167           typename U1, typename U2, typename U3, typename U4, typename U5
0168         >
0169     struct apply
0170     {
0171      private:
0172         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
0173         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
0174         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
0175         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
0176 
0177      public:
0178         typedef typename apply_wrap3<
0179               f_
0180             , typename t1::type, typename t2::type, typename t3::type
0181             >::type type;
0182 
0183     };
0184 };
0185 
0186 namespace aux {
0187 
0188 template<
0189       typename F, typename T1, typename T2, typename T3, typename U1
0190     , typename U2, typename U3, typename U4, typename U5
0191     >
0192 struct resolve_bind_arg<
0193       bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
0194     >
0195 {
0196     typedef bind3< F,T1,T2,T3 > f_;
0197     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0198 };
0199 
0200 } // namespace aux
0201 
0202 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
0203 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
0204 
0205 template<
0206       typename F, typename T1, typename T2, typename T3, typename T4
0207     >
0208 struct bind4
0209 {
0210     template<
0211           typename U1, typename U2, typename U3, typename U4, typename U5
0212         >
0213     struct apply
0214     {
0215      private:
0216         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
0217         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
0218         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
0219         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
0220         typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
0221 
0222      public:
0223         typedef typename apply_wrap4<
0224               f_
0225             , typename t1::type, typename t2::type, typename t3::type
0226             , typename t4::type
0227             >::type type;
0228 
0229     };
0230 };
0231 
0232 namespace aux {
0233 
0234 template<
0235       typename F, typename T1, typename T2, typename T3, typename T4
0236     , typename U1, typename U2, typename U3, typename U4, typename U5
0237     >
0238 struct resolve_bind_arg<
0239       bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
0240     >
0241 {
0242     typedef bind4< F,T1,T2,T3,T4 > f_;
0243     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0244 };
0245 
0246 } // namespace aux
0247 
0248 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
0249 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
0250 
0251 template<
0252       typename F, typename T1, typename T2, typename T3, typename T4
0253     , typename T5
0254     >
0255 struct bind5
0256 {
0257     template<
0258           typename U1, typename U2, typename U3, typename U4, typename U5
0259         >
0260     struct apply
0261     {
0262      private:
0263         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
0264         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
0265         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
0266         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
0267         typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
0268         typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
0269 
0270      public:
0271         typedef typename apply_wrap5<
0272               f_
0273             , typename t1::type, typename t2::type, typename t3::type
0274             , typename t4::type, typename t5::type
0275             >::type type;
0276 
0277     };
0278 };
0279 
0280 namespace aux {
0281 
0282 template<
0283       typename F, typename T1, typename T2, typename T3, typename T4
0284     , typename T5, typename U1, typename U2, typename U3, typename U4
0285     , typename U5
0286     >
0287 struct resolve_bind_arg<
0288       bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
0289     >
0290 {
0291     typedef bind5< F,T1,T2,T3,T4,T5 > f_;
0292     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0293 };
0294 
0295 } // namespace aux
0296 
0297 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
0298 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
0299 }}
0300