epoc32/include/stdapis/boost/mpl/bind.hpp
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
     1.1 --- a/epoc32/include/stdapis/boost/mpl/bind.hpp	Tue Mar 16 16:12:26 2010 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,547 +0,0 @@
     1.4 -
     1.5 -#if !defined(BOOST_PP_IS_ITERATING)
     1.6 -
     1.7 -///// header body
     1.8 -
     1.9 -#ifndef BOOST_MPL_BIND_HPP_INCLUDED
    1.10 -#define BOOST_MPL_BIND_HPP_INCLUDED
    1.11 -
    1.12 -// Copyright Peter Dimov 2001
    1.13 -// Copyright Aleksey Gurtovoy 2001-2004
    1.14 -//
    1.15 -// Distributed under the Boost Software License, Version 1.0. 
    1.16 -// (See accompanying file LICENSE_1_0.txt or copy at 
    1.17 -// http://www.boost.org/LICENSE_1_0.txt)
    1.18 -//
    1.19 -// See http://www.boost.org/libs/mpl for documentation.
    1.20 -
    1.21 -// $Source: /cvsroot/boost/boost/boost/mpl/bind.hpp,v $
    1.22 -// $Date: 2004/10/26 14:51:04 $
    1.23 -// $Revision: 1.13 $
    1.24 -
    1.25 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
    1.26 -#   include <boost/mpl/bind_fwd.hpp>
    1.27 -#   include <boost/mpl/placeholders.hpp>
    1.28 -#   include <boost/mpl/next.hpp>
    1.29 -#   include <boost/mpl/protect.hpp>
    1.30 -#   include <boost/mpl/apply_wrap.hpp>
    1.31 -#   include <boost/mpl/limits/arity.hpp>
    1.32 -#   include <boost/mpl/aux_/na.hpp>
    1.33 -#   include <boost/mpl/aux_/arity_spec.hpp>
    1.34 -#   include <boost/mpl/aux_/type_wrapper.hpp>
    1.35 -#   include <boost/mpl/aux_/yes_no.hpp>
    1.36 -#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
    1.37 -#       include <boost/type_traits/is_reference.hpp>
    1.38 -#   endif 
    1.39 -#endif
    1.40 -
    1.41 -#include <boost/mpl/aux_/config/bind.hpp>
    1.42 -#include <boost/mpl/aux_/config/static_constant.hpp>
    1.43 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
    1.44 -
    1.45 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
    1.46 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
    1.47 -
    1.48 -#   if defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
    1.49 -#       define BOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp
    1.50 -#   else
    1.51 -#       define BOOST_MPL_PREPROCESSED_HEADER bind.hpp
    1.52 -#   endif
    1.53 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
    1.54 -
    1.55 -#else
    1.56 -
    1.57 -#   include <boost/mpl/aux_/preprocessor/params.hpp>
    1.58 -#   include <boost/mpl/aux_/preprocessor/default_params.hpp>
    1.59 -#   include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
    1.60 -#   include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
    1.61 -#   include <boost/mpl/aux_/preprocessor/ext_params.hpp>
    1.62 -#   include <boost/mpl/aux_/preprocessor/repeat.hpp>
    1.63 -#   include <boost/mpl/aux_/preprocessor/enum.hpp>
    1.64 -#   include <boost/mpl/aux_/preprocessor/add.hpp>
    1.65 -#   include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
    1.66 -#   include <boost/mpl/aux_/config/ctps.hpp>
    1.67 -#   include <boost/mpl/aux_/config/ttp.hpp>
    1.68 -#   include <boost/mpl/aux_/config/dtp.hpp>
    1.69 -#   include <boost/mpl/aux_/nttp_decl.hpp>
    1.70 -
    1.71 -#   include <boost/preprocessor/iterate.hpp>
    1.72 -#   include <boost/preprocessor/comma_if.hpp>
    1.73 -#   include <boost/preprocessor/cat.hpp>
    1.74 -#   include <boost/preprocessor/inc.hpp>
    1.75 -
    1.76 -namespace boost { namespace mpl {
    1.77 -
    1.78 -// local macros, #undef-ined at the end of the header
    1.79 -#   define AUX778076_APPLY \
    1.80 -    BOOST_PP_CAT(apply_wrap,BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
    1.81 -    /**/
    1.82 -
    1.83 -#   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
    1.84 -#       define AUX778076_DMC_PARAM() , int dummy_
    1.85 -#   else
    1.86 -#       define AUX778076_DMC_PARAM()
    1.87 -#   endif
    1.88 -
    1.89 -#   define AUX778076_BIND_PARAMS(param) \
    1.90 -    BOOST_MPL_PP_PARAMS( \
    1.91 -          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
    1.92 -        , param \
    1.93 -        ) \
    1.94 -    /**/
    1.95 -
    1.96 -#   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
    1.97 -    BOOST_MPL_PP_DEFAULT_PARAMS( \
    1.98 -          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
    1.99 -        , param \
   1.100 -        , value \
   1.101 -        ) \
   1.102 -    /**/
   1.103 -
   1.104 -#   define AUX778076_BIND_N_PARAMS(n, param) \
   1.105 -    BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
   1.106 -    /**/
   1.107 -
   1.108 -#   define AUX778076_BIND_N_SPEC_PARAMS(n, param, def) \
   1.109 -    BOOST_PP_COMMA_IF(n) \
   1.110 -    BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
   1.111 -    /**/
   1.112 -
   1.113 -#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
   1.114 -#   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
   1.115 -    AUX778076_BIND_DEFAULT_PARAMS(param, value) \
   1.116 -    /**/
   1.117 -#else
   1.118 -#   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
   1.119 -    AUX778076_BIND_PARAMS(param) \
   1.120 -    /**/
   1.121 -#endif
   1.122 -
   1.123 -namespace aux {
   1.124 -
   1.125 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
   1.126 -
   1.127 -template<
   1.128 -      typename T, AUX778076_BIND_PARAMS(typename U)
   1.129 -    >
   1.130 -struct resolve_bind_arg
   1.131 -{
   1.132 -    typedef T type;
   1.133 -};
   1.134 -
   1.135 -#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
   1.136 -
   1.137 -template<
   1.138 -      typename T
   1.139 -    , typename Arg
   1.140 -    >
   1.141 -struct replace_unnamed_arg
   1.142 -{
   1.143 -    typedef Arg next;
   1.144 -    typedef T type;
   1.145 -};
   1.146 -
   1.147 -template<
   1.148 -      typename Arg
   1.149 -    >
   1.150 -struct replace_unnamed_arg< arg<-1>,Arg >
   1.151 -{
   1.152 -    typedef typename Arg::next next;
   1.153 -    typedef Arg type;
   1.154 -};
   1.155 -
   1.156 -#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
   1.157 -
   1.158 -template<
   1.159 -      BOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U)
   1.160 -    >
   1.161 -struct resolve_bind_arg< arg<N>,AUX778076_BIND_PARAMS(U) >
   1.162 -{
   1.163 -    typedef typename AUX778076_APPLY<mpl::arg<N>, AUX778076_BIND_PARAMS(U)>::type type;
   1.164 -};
   1.165 -
   1.166 -#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
   1.167 -template<
   1.168 -      typename F, AUX778076_BIND_PARAMS(typename T), AUX778076_BIND_PARAMS(typename U)
   1.169 -    >
   1.170 -struct resolve_bind_arg< bind<F,AUX778076_BIND_PARAMS(T)>,AUX778076_BIND_PARAMS(U) >
   1.171 -{
   1.172 -    typedef bind<F,AUX778076_BIND_PARAMS(T)> f_;
   1.173 -    typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
   1.174 -};
   1.175 -#endif
   1.176 -
   1.177 -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
   1.178 -
   1.179 -// agurt, 15/jan/02: it's not a intended to be used as a function class, and 
   1.180 -// MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't
   1.181 -// work), so I went with the 'result_' here, and in all other similar cases
   1.182 -template< bool >
   1.183 -struct resolve_arg_impl
   1.184 -{
   1.185 -    template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
   1.186 -    {
   1.187 -        typedef T type;
   1.188 -    };
   1.189 -};
   1.190 -
   1.191 -template<> 
   1.192 -struct resolve_arg_impl<true>
   1.193 -{
   1.194 -    template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
   1.195 -    {
   1.196 -        typedef typename AUX778076_APPLY<
   1.197 -              T
   1.198 -            , AUX778076_BIND_PARAMS(U)
   1.199 -            >::type type;
   1.200 -    };
   1.201 -};
   1.202 -
   1.203 -// for 'resolve_bind_arg'
   1.204 -template< typename T > struct is_bind_template;
   1.205 -
   1.206 -template< 
   1.207 -      typename T, AUX778076_BIND_PARAMS(typename U)
   1.208 -    >
   1.209 -struct resolve_bind_arg
   1.210 -    : resolve_arg_impl< is_bind_template<T>::value >
   1.211 -            ::template result_< T,AUX778076_BIND_PARAMS(U) >
   1.212 -{
   1.213 -};
   1.214 -
   1.215 -#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
   1.216 -
   1.217 -template< typename T > 
   1.218 -struct replace_unnamed_arg_impl
   1.219 -{
   1.220 -    template< typename Arg > struct result_
   1.221 -    {
   1.222 -        typedef Arg next;
   1.223 -        typedef T type;
   1.224 -    };
   1.225 -};
   1.226 -
   1.227 -template<> 
   1.228 -struct replace_unnamed_arg_impl< arg<-1> >
   1.229 -{
   1.230 -    template< typename Arg > struct result_
   1.231 -    {
   1.232 -        typedef typename next<Arg>::type next;
   1.233 -        typedef Arg type;
   1.234 -    };
   1.235 -};
   1.236 -
   1.237 -template< typename T, typename Arg > 
   1.238 -struct replace_unnamed_arg
   1.239 -    : replace_unnamed_arg_impl<T>::template result_<Arg>
   1.240 -{
   1.241 -};
   1.242 -
   1.243 -#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
   1.244 -
   1.245 -// agurt, 10/mar/02: the forward declaration has to appear before any of
   1.246 -// 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it
   1.247 -template< BOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser;
   1.248 -
   1.249 -aux::no_tag is_bind_helper(...);
   1.250 -template< typename T > aux::no_tag is_bind_helper(protect<T>*);
   1.251 -
   1.252 -// overload for "main" form
   1.253 -// agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload 
   1.254 -// in case if we use 'aux::type_wrapper< bind<...> >' here, and all 
   1.255 -// 'bind' instantiations form a complete type anyway
   1.256 -#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
   1.257 -template<
   1.258 -      typename F, AUX778076_BIND_PARAMS(typename T)
   1.259 -    >
   1.260 -aux::yes_tag is_bind_helper(bind<F,AUX778076_BIND_PARAMS(T)>*);
   1.261 -#endif
   1.262 -
   1.263 -template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
   1.264 -aux::yes_tag is_bind_helper(arg<N>*);
   1.265 -
   1.266 -template< bool is_ref_ = true >
   1.267 -struct is_bind_template_impl
   1.268 -{
   1.269 -    template< typename T > struct result_
   1.270 -    {
   1.271 -        BOOST_STATIC_CONSTANT(bool, value = false);
   1.272 -    };
   1.273 -};
   1.274 -
   1.275 -template<>
   1.276 -struct is_bind_template_impl<false>
   1.277 -{
   1.278 -    template< typename T > struct result_
   1.279 -    {
   1.280 -        BOOST_STATIC_CONSTANT(bool, value = 
   1.281 -              sizeof(aux::is_bind_helper(static_cast<T*>(0))) 
   1.282 -                == sizeof(aux::yes_tag)
   1.283 -            );
   1.284 -    };
   1.285 -};
   1.286 -
   1.287 -template< typename T > struct is_bind_template
   1.288 -    : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
   1.289 -        ::template result_<T>
   1.290 -{
   1.291 -};
   1.292 -
   1.293 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
   1.294 -
   1.295 -} // namespace aux
   1.296 -
   1.297 -
   1.298 -#define BOOST_PP_ITERATION_PARAMS_1 \
   1.299 -    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind.hpp>))
   1.300 -#include BOOST_PP_ITERATE()
   1.301 -
   1.302 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
   1.303 -    && !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
   1.304 -/// if_/eval_if specializations
   1.305 -#   define AUX778076_SPEC_NAME if_
   1.306 -#   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
   1.307 -#   include BOOST_PP_ITERATE()
   1.308 -
   1.309 -#if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
   1.310 -#   define AUX778076_SPEC_NAME eval_if
   1.311 -#   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
   1.312 -#   include BOOST_PP_ITERATE()
   1.313 -#endif
   1.314 -#endif
   1.315 -
   1.316 -// real C++ version is already taken care of
   1.317 -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
   1.318 -    && !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
   1.319 -
   1.320 -namespace aux {
   1.321 -// apply_count_args
   1.322 -#define AUX778076_COUNT_ARGS_PREFIX bind
   1.323 -#define AUX778076_COUNT_ARGS_DEFAULT na
   1.324 -#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
   1.325 -#include <boost/mpl/aux_/count_args.hpp>
   1.326 -}
   1.327 -
   1.328 -// bind
   1.329 -template<
   1.330 -      typename F, AUX778076_BIND_PARAMS(typename T) AUX778076_DMC_PARAM()
   1.331 -    >
   1.332 -struct bind
   1.333 -    : aux::bind_chooser<
   1.334 -          aux::bind_count_args<AUX778076_BIND_PARAMS(T)>::value
   1.335 -        >::template result_< F,AUX778076_BIND_PARAMS(T) >::type
   1.336 -{
   1.337 -};
   1.338 -
   1.339 -BOOST_MPL_AUX_ARITY_SPEC(
   1.340 -      BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
   1.341 -    , bind
   1.342 -    )
   1.343 -
   1.344 -BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
   1.345 -      BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
   1.346 -    , bind
   1.347 -    )
   1.348 -
   1.349 -
   1.350 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
   1.351 -
   1.352 -#   undef AUX778076_BIND_NESTED_DEFAULT_PARAMS
   1.353 -#   undef AUX778076_BIND_N_SPEC_PARAMS
   1.354 -#   undef AUX778076_BIND_N_PARAMS
   1.355 -#   undef AUX778076_BIND_DEFAULT_PARAMS
   1.356 -#   undef AUX778076_BIND_PARAMS
   1.357 -#   undef AUX778076_DMC_PARAM
   1.358 -#   undef AUX778076_APPLY
   1.359 -
   1.360 -}}
   1.361 -
   1.362 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
   1.363 -#endif // BOOST_MPL_BIND_HPP_INCLUDED
   1.364 -
   1.365 -///// iteration, depth == 1
   1.366 -
   1.367 -#elif BOOST_PP_ITERATION_DEPTH() == 1
   1.368 -
   1.369 -#   define i_ BOOST_PP_FRAME_ITERATION(1)
   1.370 -
   1.371 -#if defined(AUX778076_SPEC_NAME)
   1.372 -
   1.373 -// lazy metafunction specialization
   1.374 -template< template< BOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag >
   1.375 -struct BOOST_PP_CAT(quote,i_);
   1.376 -
   1.377 -template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
   1.378 -
   1.379 -template<
   1.380 -      typename Tag AUX778076_BIND_N_PARAMS(i_, typename T)
   1.381 -    >
   1.382 -struct BOOST_PP_CAT(bind,i_)< 
   1.383 -      BOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag>
   1.384 -    AUX778076_BIND_N_PARAMS(i_,T)
   1.385 -    >
   1.386 -{
   1.387 -    template<
   1.388 -          AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
   1.389 -        >
   1.390 -    struct apply
   1.391 -    {
   1.392 -     private:
   1.393 -        typedef mpl::arg<1> n1;
   1.394 -#       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
   1.395 -#       include BOOST_PP_ITERATE()
   1.396 -
   1.397 -        typedef typename AUX778076_SPEC_NAME<
   1.398 -              typename t1::type
   1.399 -            , BOOST_MPL_PP_EXT_PARAMS(2, BOOST_PP_INC(i_), t)
   1.400 -            >::type f_;
   1.401 -
   1.402 -     public:
   1.403 -        typedef typename f_::type type;
   1.404 -    };
   1.405 -};
   1.406 -
   1.407 -#undef AUX778076_SPEC_NAME
   1.408 -
   1.409 -#else // AUX778076_SPEC_NAME
   1.410 -
   1.411 -template<
   1.412 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
   1.413 -    >
   1.414 -struct BOOST_PP_CAT(bind,i_)
   1.415 -{
   1.416 -    template<
   1.417 -          AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
   1.418 -        >
   1.419 -    struct apply
   1.420 -    {
   1.421 -     private:
   1.422 -#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
   1.423 -
   1.424 -        typedef aux::replace_unnamed_arg< F,mpl::arg<1> > r0;
   1.425 -        typedef typename r0::type a0;
   1.426 -        typedef typename r0::next n1;
   1.427 -        typedef typename aux::resolve_bind_arg<a0,AUX778076_BIND_PARAMS(U)>::type f_;
   1.428 -        ///
   1.429 -#   else
   1.430 -        typedef typename aux::resolve_bind_arg<F,AUX778076_BIND_PARAMS(U)>::type f_;
   1.431 -
   1.432 -#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
   1.433 -
   1.434 -#   if i_ > 0
   1.435 -#       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
   1.436 -#       include BOOST_PP_ITERATE()
   1.437 -#   endif
   1.438 -
   1.439 -     public:
   1.440 -
   1.441 -#   define AUX778076_ARG(unused, i_, t) \
   1.442 -    BOOST_PP_COMMA_IF(i_) \
   1.443 -    typename BOOST_PP_CAT(t,BOOST_PP_INC(i_))::type \
   1.444 -/**/
   1.445 -
   1.446 -        typedef typename BOOST_PP_CAT(apply_wrap,i_)<
   1.447 -              f_ 
   1.448 -            BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t)
   1.449 -            >::type type;
   1.450 -
   1.451 -#   undef AUX778076_ARG
   1.452 -    };
   1.453 -};
   1.454 -
   1.455 -namespace aux {
   1.456 -
   1.457 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
   1.458 -
   1.459 -template<
   1.460 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U)
   1.461 -    >
   1.462 -struct resolve_bind_arg<
   1.463 -      BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>,AUX778076_BIND_PARAMS(U)
   1.464 -    >
   1.465 -{
   1.466 -    typedef BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)> f_;
   1.467 -    typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
   1.468 -};
   1.469 -
   1.470 -#else
   1.471 -
   1.472 -template<
   1.473 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T)
   1.474 -    >
   1.475 -aux::yes_tag
   1.476 -is_bind_helper(BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>*);
   1.477 -
   1.478 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
   1.479 -
   1.480 -} // namespace aux
   1.481 -
   1.482 -BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
   1.483 -BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
   1.484 -
   1.485 -#   if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
   1.486 -#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
   1.487 -    
   1.488 -#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
   1.489 -/// primary template (not a specialization!)
   1.490 -template<
   1.491 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
   1.492 -    >
   1.493 -struct bind
   1.494 -    : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
   1.495 -{
   1.496 -};
   1.497 -#else
   1.498 -template<
   1.499 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
   1.500 -    >
   1.501 -struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) >
   1.502 -    : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
   1.503 -{
   1.504 -};
   1.505 -#endif
   1.506 -
   1.507 -#   else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
   1.508 -
   1.509 -namespace aux {
   1.510 -
   1.511 -template<>
   1.512 -struct bind_chooser<i_>
   1.513 -{
   1.514 -    template<
   1.515 -          typename F, AUX778076_BIND_PARAMS(typename T)
   1.516 -        >
   1.517 -    struct result_
   1.518 -    {
   1.519 -        typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type;
   1.520 -    };
   1.521 -};
   1.522 -
   1.523 -} // namespace aux
   1.524 -
   1.525 -#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
   1.526 -#   endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE
   1.527 -
   1.528 -#endif // AUX778076_SPEC_NAME
   1.529 -
   1.530 -#   undef i_
   1.531 -
   1.532 -///// iteration, depth == 2
   1.533 -
   1.534 -#elif BOOST_PP_ITERATION_DEPTH() == 2
   1.535 -
   1.536 -#   define j_ BOOST_PP_FRAME_ITERATION(2)
   1.537 -#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
   1.538 -
   1.539 -        typedef aux::replace_unnamed_arg< BOOST_PP_CAT(T,j_),BOOST_PP_CAT(n,j_) > BOOST_PP_CAT(r,j_);
   1.540 -        typedef typename BOOST_PP_CAT(r,j_)::type BOOST_PP_CAT(a,j_);
   1.541 -        typedef typename BOOST_PP_CAT(r,j_)::next BOOST_PP_CAT(n,BOOST_PP_INC(j_));
   1.542 -        typedef aux::resolve_bind_arg<BOOST_PP_CAT(a,j_), AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
   1.543 -        ///
   1.544 -#   else
   1.545 -        typedef aux::resolve_bind_arg< BOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
   1.546 -
   1.547 -#   endif
   1.548 -#   undef j_
   1.549 -
   1.550 -#endif // BOOST_PP_IS_ITERATING