File indexing completed on 2025-01-18 09:40:59
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
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 }
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 }
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 }
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 }
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 }
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 }
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 }
0296
0297 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
0298 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
0299 }}
0300