From 36daa30dbec152660988e8e64d0c39ea1622a71c Mon Sep 17 00:00:00 2001
From: Tim Blechmann <tim@klingt.org>
Date: Wed, 20 Aug 2008 10:44:35 +0200
Subject: [PATCH] [boost.mpl] gcc-4.4 fixes
---
libs/boost/boost/mpl/apply.hpp | 16 ++++++-----
libs/boost/boost/mpl/apply_wrap.hpp | 15 ++++++----
libs/boost/boost/mpl/aux_/full_lambda.hpp | 22 ++++++++-------
libs/boost/boost/mpl/aux_/numeric_op.hpp | 30 +++++++++++----------
libs/boost/boost/mpl/bind.hpp | 40 ++++++++++++++++-------------
5 files changed, 68 insertions(+), 55 deletions(-)
diff --git a/libs/boost/boost/mpl/apply.hpp b/libs/boost/boost/mpl/apply.hpp
index eb7ab65..37cb4af 100644
|
a
|
b
|
|
| 8 | 8 | |
| 9 | 9 | // Copyright Aleksey Gurtovoy 2000-2004 |
| 10 | 10 | // |
| 11 | | // Distributed under the Boost Software License, Version 1.0. |
| 12 | | // (See accompanying file LICENSE_1_0.txt or copy at |
| | 11 | // Distributed under the Boost Software License, Version 1.0. |
| | 12 | // (See accompanying file LICENSE_1_0.txt or copy at |
| 13 | 13 | // http://www.boost.org/LICENSE_1_0.txt) |
| 14 | 14 | // |
| 15 | 15 | // See http://www.boost.org/libs/mpl for documentation. |
| … |
… |
namespace boost { namespace mpl {
|
| 85 | 85 | BOOST_PP_COMMA_IF(n) \ |
| 86 | 86 | BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \ |
| 87 | 87 | /**/ |
| 88 | | |
| | 88 | |
| 89 | 89 | # define AUX778076_APPLY_N_SPEC_PARAMS(n, param) \ |
| 90 | 90 | BOOST_MPL_PP_ENUM(BOOST_PP_INC(n), param) \ |
| 91 | 91 | /**/ |
| … |
… |
template<
|
| 112 | 112 | typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na) |
| 113 | 113 | > |
| 114 | 114 | struct apply |
| 115 | | : aux::apply_chooser< |
| | 115 | : aux::apply_chooser< |
| 116 | 116 | aux::apply_count_args< AUX778076_APPLY_PARAMS(T) >::value |
| 117 | 117 | >::template result_< F, AUX778076_APPLY_PARAMS(T) >::type |
| 118 | 118 | { |
| … |
… |
struct apply
|
| 135 | 135 | |
| 136 | 136 | ///// iteration, depth == 1 |
| 137 | 137 | |
| 138 | | #elif BOOST_PP_ITERATION_DEPTH() == 1 |
| | 138 | #else |
| | 139 | #if BOOST_PP_ITERATION_DEPTH() == 1 |
| 139 | 140 | |
| 140 | 141 | # define i_ BOOST_PP_FRAME_ITERATION(1) |
| 141 | 142 | |
| … |
… |
template<
|
| 144 | 145 | > |
| 145 | 146 | struct BOOST_PP_CAT(apply,i_) |
| 146 | 147 | #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) |
| 147 | | : BOOST_PP_CAT(apply_wrap,i_)< |
| | 148 | : BOOST_PP_CAT(apply_wrap,i_)< |
| 148 | 149 | typename lambda<F>::type |
| 149 | 150 | AUX778076_APPLY_N_COMMA_PARAMS(i_, T) |
| 150 | 151 | > |
| 151 | 152 | { |
| 152 | 153 | #else |
| 153 | 154 | { |
| 154 | | typedef typename BOOST_PP_CAT(apply_wrap,i_)< |
| | 155 | typedef typename BOOST_PP_CAT(apply_wrap,i_)< |
| 155 | 156 | typename lambda<F>::type |
| 156 | 157 | AUX778076_APPLY_N_COMMA_PARAMS(i_, T) |
| 157 | 158 | >::type type; |
| … |
… |
struct apply_chooser<i_>
|
| 222 | 223 | |
| 223 | 224 | # undef i_ |
| 224 | 225 | |
| | 226 | #endif |
| 225 | 227 | #endif // BOOST_PP_IS_ITERATING |
diff --git a/libs/boost/boost/mpl/apply_wrap.hpp b/libs/boost/boost/mpl/apply_wrap.hpp
index ede272a..43cff2a 100644
|
a
|
b
|
|
| 8 | 8 | |
| 9 | 9 | // Copyright Aleksey Gurtovoy 2000-2004 |
| 10 | 10 | // |
| 11 | | // Distributed under the Boost Software License, Version 1.0. |
| 12 | | // (See accompanying file LICENSE_1_0.txt or copy at |
| | 11 | // Distributed under the Boost Software License, Version 1.0. |
| | 12 | // (See accompanying file LICENSE_1_0.txt or copy at |
| 13 | 13 | // http://www.boost.org/LICENSE_1_0.txt) |
| 14 | 14 | // |
| 15 | 15 | // See http://www.boost.org/libs/mpl for documentation. |
| … |
… |
namespace boost { namespace mpl {
|
| 78 | 78 | |
| 79 | 79 | ///// iteration, depth == 1 |
| 80 | 80 | |
| 81 | | #elif BOOST_PP_ITERATION_DEPTH() == 1 |
| | 81 | #else |
| | 82 | #if BOOST_PP_ITERATION_DEPTH() == 1 |
| 82 | 83 | |
| 83 | 84 | # define i_ BOOST_PP_FRAME_ITERATION(1) |
| 84 | 85 | |
| … |
… |
struct BOOST_PP_CAT(apply_wrap,i_)
|
| 140 | 141 | : F::template apply< AUX778076_APPLY_WRAP_PARAMS(i_, T) > |
| 141 | 142 | { |
| 142 | 143 | #else |
| 143 | | { |
| | 144 | { |
| 144 | 145 | typedef typename F::template apply< |
| 145 | 146 | AUX778076_APPLY_WRAP_PARAMS(i_, T) |
| 146 | 147 | >::type type; |
| … |
… |
struct BOOST_PP_CAT(apply_wrap,i_)<AUX778076_APPLY_WRAP_SPEC_PARAMS(i_, int)>
|
| 169 | 170 | # undef i_ |
| 170 | 171 | |
| 171 | 172 | ///// iteration, depth == 2 |
| 172 | | |
| 173 | | #elif BOOST_PP_ITERATION_DEPTH() == 2 |
| | 173 | #else |
| | 174 | #if BOOST_PP_ITERATION_DEPTH() == 2 |
| 174 | 175 | |
| 175 | 176 | # define j_ BOOST_PP_FRAME_ITERATION(2) |
| 176 | 177 | |
| … |
… |
struct BOOST_PP_CAT(apply_wrap_impl,i_)<
|
| 197 | 198 | |
| 198 | 199 | # undef j_ |
| 199 | 200 | |
| | 201 | #endif |
| | 202 | #endif |
| 200 | 203 | #endif // BOOST_PP_IS_ITERATING |
diff --git a/libs/boost/boost/mpl/aux_/full_lambda.hpp b/libs/boost/boost/mpl/aux_/full_lambda.hpp
index 3e85edd..86bdcd3 100644
|
a
|
b
|
|
| 8 | 8 | |
| 9 | 9 | // Copyright Aleksey Gurtovoy 2001-2004 |
| 10 | 10 | // |
| 11 | | // Distributed under the Boost Software License, Version 1.0. |
| 12 | | // (See accompanying file LICENSE_1_0.txt or copy at |
| | 11 | // Distributed under the Boost Software License, Version 1.0. |
| | 12 | // (See accompanying file LICENSE_1_0.txt or copy at |
| 13 | 13 | // http://www.boost.org/LICENSE_1_0.txt) |
| 14 | 14 | // |
| 15 | 15 | // See http://www.boost.org/libs/mpl for documentation. |
| … |
… |
struct lambda< arg<N>,Tag AUX778076_ARITY_PARAM(int_<-1>) >
|
| 127 | 127 | { |
| 128 | 128 | typedef true_ is_le; |
| 129 | 129 | typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41 |
| 130 | | typedef mpl::protect<result_> type; |
| | 130 | typedef mpl::protect<result_> type; |
| 131 | 131 | }; |
| 132 | 132 | |
| 133 | 133 | |
| … |
… |
struct lambda<
|
| 181 | 181 | typedef typename l1::is_le is_le; |
| 182 | 182 | typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_; |
| 183 | 183 | typedef lambda< typename if_<is_le,arity_,Arity>::type,Tag2 > l3; |
| 184 | | |
| | 184 | |
| 185 | 185 | typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_; |
| 186 | 186 | typedef typename le_result_::result_ result_; |
| 187 | 187 | typedef typename le_result_::type type; |
| … |
… |
struct lambda<
|
| 200 | 200 | { |
| 201 | 201 | typedef lambda< F,Tag2 > l1; |
| 202 | 202 | typedef lambda< Tag1,Tag2 > l2; |
| 203 | | |
| | 203 | |
| 204 | 204 | typedef typename l1::is_le is_le; |
| 205 | 205 | typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_; |
| 206 | 206 | typedef typename le_result_::result_ result_; |
| … |
… |
BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
|
| 227 | 227 | |
| 228 | 228 | ///// iteration, depth == 1 |
| 229 | 229 | |
| 230 | | #elif BOOST_PP_ITERATION_DEPTH() == 1 |
| | 230 | #else |
| | 231 | #if BOOST_PP_ITERATION_DEPTH() == 1 |
| 231 | 232 | #define i_ BOOST_PP_FRAME_ITERATION(1) |
| 232 | 233 | |
| 233 | 234 | #if i_ > 0 |
| … |
… |
struct BOOST_PP_CAT(le_result,i_)
|
| 254 | 255 | typedef F< |
| 255 | 256 | BOOST_MPL_PP_REPEAT(i_, AUX778076_TYPE, L) |
| 256 | 257 | > result_; |
| 257 | | |
| | 258 | |
| 258 | 259 | typedef result_ type; |
| 259 | 260 | }; |
| 260 | 261 | |
| … |
… |
template<
|
| 299 | 300 | , AUX778076_LAMBDA_PARAMS(i_, typename T) |
| 300 | 301 | , typename Tag |
| 301 | 302 | > |
| 302 | | struct lambda< |
| | 303 | struct lambda< |
| 303 | 304 | F<AUX778076_LAMBDA_PARAMS(i_, T)> |
| 304 | 305 | , Tag |
| 305 | 306 | AUX778076_ARITY_PARAM(int_<i_>) |
| … |
… |
struct lambda<
|
| 315 | 316 | typedef aux::BOOST_PP_CAT(le_result,i_)< |
| 316 | 317 | is_le, Tag, F, AUX778076_LAMBDA_PARAMS(i_, l) |
| 317 | 318 | > le_result_; |
| 318 | | |
| | 319 | |
| 319 | 320 | typedef typename le_result_::result_ result_; |
| 320 | 321 | typedef typename le_result_::type type; |
| 321 | 322 | }; |
| … |
… |
struct lambda<
|
| 342 | 343 | F |
| 343 | 344 | AUX778076_BIND_N_PARAMS(i_, T) |
| 344 | 345 | > result_; |
| 345 | | |
| | 346 | |
| 346 | 347 | typedef result_ type; |
| 347 | 348 | }; |
| 348 | 349 | |
| 349 | 350 | #undef i_ |
| | 351 | #endif |
| 350 | 352 | #endif // BOOST_PP_IS_ITERATING |
diff --git a/libs/boost/boost/mpl/aux_/numeric_op.hpp b/libs/boost/boost/mpl/aux_/numeric_op.hpp
index 4737a38..0c4a05e 100644
|
a
|
b
|
|
| 7 | 7 | |
| 8 | 8 | // Copyright Aleksey Gurtovoy 2000-2004 |
| 9 | 9 | // |
| 10 | | // Distributed under the Boost Software License, Version 1.0. |
| 11 | | // (See accompanying file LICENSE_1_0.txt or copy at |
| | 10 | // Distributed under the Boost Software License, Version 1.0. |
| | 11 | // (See accompanying file LICENSE_1_0.txt or copy at |
| 12 | 12 | // http://www.boost.org/LICENSE_1_0.txt) |
| 13 | 13 | // |
| 14 | 14 | // See http://www.boost.org/libs/mpl for documentation. |
| … |
… |
|
| 71 | 71 | |
| 72 | 72 | namespace boost { namespace mpl { |
| 73 | 73 | |
| 74 | | template< |
| | 74 | template< |
| 75 | 75 | typename Tag1 |
| 76 | 76 | , typename Tag2 |
| 77 | 77 | #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) |
| 78 | | , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value |
| 79 | | , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value |
| | 78 | , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value |
| | 79 | , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value |
| 80 | 80 | > |
| 81 | 81 | struct AUX778076_OP_IMPL_NAME |
| 82 | 82 | : if_c< |
| … |
… |
struct AUX778076_OP_IMPL_NAME
|
| 98 | 98 | /// for Digital Mars C++/compilers with no CTPS/TTP support |
| 99 | 99 | template<> struct AUX778076_OP_IMPL_NAME<na,na> |
| 100 | 100 | { |
| 101 | | template< typename U1, typename U2 > struct apply |
| | 101 | template< typename U1, typename U2 > struct apply |
| 102 | 102 | { |
| 103 | 103 | typedef apply type; |
| 104 | 104 | BOOST_STATIC_CONSTANT(int, value = 0); |
| … |
… |
template<> struct AUX778076_OP_IMPL_NAME<na,na>
|
| 108 | 108 | #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) |
| 109 | 109 | template< typename Tag > struct AUX778076_OP_IMPL_NAME<na,Tag> |
| 110 | 110 | { |
| 111 | | template< typename U1, typename U2 > struct apply |
| | 111 | template< typename U1, typename U2 > struct apply |
| 112 | 112 | { |
| 113 | 113 | typedef apply type; |
| 114 | 114 | BOOST_STATIC_CONSTANT(int, value = 0); |
| … |
… |
template< typename Tag > struct AUX778076_OP_IMPL_NAME<na,Tag>
|
| 117 | 117 | |
| 118 | 118 | template< typename Tag > struct AUX778076_OP_IMPL_NAME<Tag,na> |
| 119 | 119 | { |
| 120 | | template< typename U1, typename U2 > struct apply |
| | 120 | template< typename U1, typename U2 > struct apply |
| 121 | 121 | { |
| 122 | 122 | typedef apply type; |
| 123 | 123 | BOOST_STATIC_CONSTANT(int, value = 0); |
| … |
… |
template< typename Tag > struct AUX778076_OP_IMPL_NAME<Tag,na>
|
| 126 | 126 | #else |
| 127 | 127 | template<> struct AUX778076_OP_IMPL_NAME<na,integral_c_tag> |
| 128 | 128 | { |
| 129 | | template< typename U1, typename U2 > struct apply |
| | 129 | template< typename U1, typename U2 > struct apply |
| 130 | 130 | { |
| 131 | 131 | typedef apply type; |
| 132 | 132 | BOOST_STATIC_CONSTANT(int, value = 0); |
| … |
… |
template<> struct AUX778076_OP_IMPL_NAME<na,integral_c_tag>
|
| 135 | 135 | |
| 136 | 136 | template<> struct AUX778076_OP_IMPL_NAME<integral_c_tag,na> |
| 137 | 137 | { |
| 138 | | template< typename U1, typename U2 > struct apply |
| | 138 | template< typename U1, typename U2 > struct apply |
| 139 | 139 | { |
| 140 | 140 | typedef apply type; |
| 141 | 141 | BOOST_STATIC_CONSTANT(int, value = 0); |
| … |
… |
struct AUX778076_OP_NAME
|
| 193 | 193 | # else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION |
| 194 | 194 | |
| 195 | 195 | /// forward declaration |
| 196 | | template< |
| | 196 | template< |
| 197 | 197 | typename BOOST_MPL_AUX_NA_PARAM(N1) |
| 198 | 198 | , typename BOOST_MPL_AUX_NA_PARAM(N2) |
| 199 | 199 | > |
| … |
… |
struct AUX778076_OP_NAME
|
| 228 | 228 | ) |
| 229 | 229 | }; |
| 230 | 230 | |
| 231 | | template< |
| | 231 | template< |
| 232 | 232 | typename N1 |
| 233 | 233 | , typename N2 |
| 234 | 234 | > |
| … |
… |
struct BOOST_PP_CAT(AUX778076_OP_NAME,2)
|
| 238 | 238 | |
| 239 | 239 | #else // AUX778076_OP_ARITY == 2 |
| 240 | 240 | |
| 241 | | template< |
| | 241 | template< |
| 242 | 242 | typename BOOST_MPL_AUX_NA_PARAM(N1) |
| 243 | 243 | , typename BOOST_MPL_AUX_NA_PARAM(N2) |
| 244 | 244 | > |
| … |
… |
BOOST_MPL_AUX_NA_SPEC2(2, AUX778076_OP_ARITY, AUX778076_OP_NAME)
|
| 287 | 287 | |
| 288 | 288 | ///// iteration, depth == 1 |
| 289 | 289 | |
| 290 | | #elif BOOST_PP_ITERATION_DEPTH() == 1 |
| | 290 | #else |
| | 291 | #if BOOST_PP_ITERATION_DEPTH() == 1 |
| 291 | 292 | |
| 292 | 293 | # define i_ BOOST_PP_FRAME_ITERATION(1) |
| 293 | 294 | |
| … |
… |
struct AUX778076_OP_NAME<BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na)>
|
| 308 | 309 | |
| 309 | 310 | # undef i_ |
| 310 | 311 | |
| | 312 | #endif |
| 311 | 313 | #endif // BOOST_PP_IS_ITERATING |
diff --git a/libs/boost/boost/mpl/bind.hpp b/libs/boost/boost/mpl/bind.hpp
index 8b17bb8..88a1081 100644
|
a
|
b
|
|
| 9 | 9 | // Copyright Peter Dimov 2001 |
| 10 | 10 | // Copyright Aleksey Gurtovoy 2001-2004 |
| 11 | 11 | // |
| 12 | | // Distributed under the Boost Software License, Version 1.0. |
| 13 | | // (See accompanying file LICENSE_1_0.txt or copy at |
| | 12 | // Distributed under the Boost Software License, Version 1.0. |
| | 13 | // (See accompanying file LICENSE_1_0.txt or copy at |
| 14 | 14 | // http://www.boost.org/LICENSE_1_0.txt) |
| 15 | 15 | // |
| 16 | 16 | // See http://www.boost.org/libs/mpl for documentation. |
| … |
… |
|
| 32 | 32 | # include <boost/mpl/aux_/yes_no.hpp> |
| 33 | 33 | # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) |
| 34 | 34 | # include <boost/type_traits/is_reference.hpp> |
| 35 | | # endif |
| | 35 | # endif |
| 36 | 36 | #endif |
| 37 | 37 | |
| 38 | 38 | #include <boost/mpl/aux_/config/bind.hpp> |
| … |
… |
struct resolve_bind_arg< bind<F,AUX778076_BIND_PARAMS(T)>,AUX778076_BIND_PARAMS(
|
| 173 | 173 | |
| 174 | 174 | #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION |
| 175 | 175 | |
| 176 | | // agurt, 15/jan/02: it's not a intended to be used as a function class, and |
| | 176 | // agurt, 15/jan/02: it's not a intended to be used as a function class, and |
| 177 | 177 | // MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't |
| 178 | 178 | // work), so I went with the 'result_' here, and in all other similar cases |
| 179 | 179 | template< bool > |
| … |
… |
struct resolve_arg_impl
|
| 185 | 185 | }; |
| 186 | 186 | }; |
| 187 | 187 | |
| 188 | | template<> |
| | 188 | template<> |
| 189 | 189 | struct resolve_arg_impl<true> |
| 190 | 190 | { |
| 191 | 191 | template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_ |
| … |
… |
struct resolve_arg_impl<true>
|
| 200 | 200 | // for 'resolve_bind_arg' |
| 201 | 201 | template< typename T > struct is_bind_template; |
| 202 | 202 | |
| 203 | | template< |
| | 203 | template< |
| 204 | 204 | typename T, AUX778076_BIND_PARAMS(typename U) |
| 205 | 205 | > |
| 206 | 206 | struct resolve_bind_arg |
| … |
… |
struct resolve_bind_arg
|
| 211 | 211 | |
| 212 | 212 | # if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT) |
| 213 | 213 | |
| 214 | | template< typename T > |
| | 214 | template< typename T > |
| 215 | 215 | struct replace_unnamed_arg_impl |
| 216 | 216 | { |
| 217 | 217 | template< typename Arg > struct result_ |
| … |
… |
struct replace_unnamed_arg_impl
|
| 221 | 221 | }; |
| 222 | 222 | }; |
| 223 | 223 | |
| 224 | | template<> |
| | 224 | template<> |
| 225 | 225 | struct replace_unnamed_arg_impl< arg<-1> > |
| 226 | 226 | { |
| 227 | 227 | template< typename Arg > struct result_ |
| … |
… |
struct replace_unnamed_arg_impl< arg<-1> >
|
| 231 | 231 | }; |
| 232 | 232 | }; |
| 233 | 233 | |
| 234 | | template< typename T, typename Arg > |
| | 234 | template< typename T, typename Arg > |
| 235 | 235 | struct replace_unnamed_arg |
| 236 | 236 | : replace_unnamed_arg_impl<T>::template result_<Arg> |
| 237 | 237 | { |
| … |
… |
aux::no_tag is_bind_helper(...);
|
| 247 | 247 | template< typename T > aux::no_tag is_bind_helper(protect<T>*); |
| 248 | 248 | |
| 249 | 249 | // overload for "main" form |
| 250 | | // agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload |
| 251 | | // in case if we use 'aux::type_wrapper< bind<...> >' here, and all |
| | 250 | // agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload |
| | 251 | // in case if we use 'aux::type_wrapper< bind<...> >' here, and all |
| 252 | 252 | // 'bind' instantiations form a complete type anyway |
| 253 | 253 | #if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) |
| 254 | 254 | template< |
| … |
… |
struct is_bind_template_impl<false>
|
| 274 | 274 | { |
| 275 | 275 | template< typename T > struct result_ |
| 276 | 276 | { |
| 277 | | BOOST_STATIC_CONSTANT(bool, value = |
| 278 | | sizeof(aux::is_bind_helper(static_cast<T*>(0))) |
| | 277 | BOOST_STATIC_CONSTANT(bool, value = |
| | 278 | sizeof(aux::is_bind_helper(static_cast<T*>(0))) |
| 279 | 279 | == sizeof(aux::yes_tag) |
| 280 | 280 | ); |
| 281 | 281 | }; |
| … |
… |
BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
|
| 361 | 361 | |
| 362 | 362 | ///// iteration, depth == 1 |
| 363 | 363 | |
| 364 | | #elif BOOST_PP_ITERATION_DEPTH() == 1 |
| | 364 | #else |
| | 365 | #if BOOST_PP_ITERATION_DEPTH() == 1 |
| 365 | 366 | |
| 366 | 367 | # define i_ BOOST_PP_FRAME_ITERATION(1) |
| 367 | 368 | |
| … |
… |
template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
|
| 376 | 377 | template< |
| 377 | 378 | typename Tag AUX778076_BIND_N_PARAMS(i_, typename T) |
| 378 | 379 | > |
| 379 | | struct BOOST_PP_CAT(bind,i_)< |
| | 380 | struct BOOST_PP_CAT(bind,i_)< |
| 380 | 381 | BOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag> |
| 381 | 382 | AUX778076_BIND_N_PARAMS(i_,T) |
| 382 | 383 | > |
| … |
… |
struct BOOST_PP_CAT(bind,i_)
|
| 441 | 442 | /**/ |
| 442 | 443 | |
| 443 | 444 | typedef typename BOOST_PP_CAT(apply_wrap,i_)< |
| 444 | | f_ |
| | 445 | f_ |
| 445 | 446 | BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t) |
| 446 | 447 | >::type type; |
| 447 | 448 | |
| … |
… |
BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
|
| 481 | 482 | |
| 482 | 483 | # if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) |
| 483 | 484 | # if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) |
| 484 | | |
| | 485 | |
| 485 | 486 | #if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY |
| 486 | 487 | /// primary template (not a specialization!) |
| 487 | 488 | template< |
| … |
… |
struct bind_chooser<i_>
|
| 528 | 529 | |
| 529 | 530 | ///// iteration, depth == 2 |
| 530 | 531 | |
| 531 | | #elif BOOST_PP_ITERATION_DEPTH() == 2 |
| | 532 | #else |
| | 533 | #if BOOST_PP_ITERATION_DEPTH() == 2 |
| 532 | 534 | |
| 533 | 535 | # define j_ BOOST_PP_FRAME_ITERATION(2) |
| 534 | 536 | # if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT) |
| … |
… |
struct bind_chooser<i_>
|
| 544 | 546 | # endif |
| 545 | 547 | # undef j_ |
| 546 | 548 | |
| | 549 | #endif |
| | 550 | #endif |
| 547 | 551 | #endif // BOOST_PP_IS_ITERATING |