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