/usr/include/boost/mpl
NameSizeModeActions
aux_/-0755rm
limits/-0755rm
list/-0755rm
map/-0755rm
math/-0755rm
multiset/-0755rm
set/-0755rm
vector/-0755rm
accumulate.hpp9460644editdlrm
advance.hpp19550644editdlrm
advance_fwd.hpp6600644editdlrm
alias.hpp4520644editdlrm
always.hpp8380644editdlrm
and.hpp15930644editdlrm
apply.hpp60870644editdlrm
apply_fwd.hpp26630644editdlrm
apply_wrap.hpp61770644editdlrm
arg.hpp32160644editdlrm
arg_fwd.hpp7110644editdlrm
arithmetic.hpp6650644editdlrm
assert.hpp147450644editdlrm
as_sequence.hpp8790644editdlrm
at.hpp12010644editdlrm
at_fwd.hpp5460644editdlrm
back.hpp9010644editdlrm
back_fwd.hpp5440644editdlrm
back_inserter.hpp6860644editdlrm
base.hpp7160644editdlrm
begin.hpp4400644editdlrm
begin_end.hpp14440644editdlrm
begin_end_fwd.hpp6460644editdlrm
bind.hpp149510644editdlrm
bind_fwd.hpp24930644editdlrm
bitand.hpp11460644editdlrm
bitor.hpp11330644editdlrm
bitwise.hpp6130644editdlrm
bitxor.hpp5870644editdlrm
bool.hpp9640644editdlrm
bool_fwd.hpp7660644editdlrm
char.hpp5750644editdlrm
char_fwd.hpp7340644editdlrm
clear.hpp9100644editdlrm
clear_fwd.hpp5490644editdlrm
comparison.hpp6350644editdlrm
contains.hpp10090644editdlrm
contains_fwd.hpp6030644editdlrm
copy.hpp11060644editdlrm
copy_if.hpp20850644editdlrm
count.hpp9530644editdlrm
count_fwd.hpp5610644editdlrm
count_if.hpp17660644editdlrm
deque.hpp16820644editdlrm
deref.hpp9390644editdlrm
distance.hpp20280644editdlrm
distance_fwd.hpp6660644editdlrm
divides.hpp5230644editdlrm
empty.hpp9100644editdlrm
empty_base.hpp13990644editdlrm
empty_fwd.hpp5490644editdlrm
empty_sequence.hpp9210644editdlrm
end.hpp4340644editdlrm
equal.hpp26680644editdlrm
equal_to.hpp5280644editdlrm
erase.hpp10710644editdlrm
erase_fwd.hpp5800644editdlrm
erase_key.hpp10470644editdlrm
erase_key_fwd.hpp5830644editdlrm
eval_if.hpp17540644editdlrm
filter_view.hpp11450644editdlrm
find.hpp8410644editdlrm
find_if.hpp11960644editdlrm
fold.hpp11770644editdlrm
for_each.hpp30770644editdlrm
front.hpp9100644editdlrm
front_fwd.hpp5490644editdlrm
front_inserter.hpp6920644editdlrm
get_tag.hpp5760644editdlrm
greater.hpp5230644editdlrm
greater_equal.hpp5480644editdlrm
has_key.hpp10590644editdlrm
has_key_fwd.hpp6220644editdlrm
has_xxx.hpp220560644editdlrm
identity.hpp9510644editdlrm
if.hpp29100644editdlrm
index_if.hpp15080644editdlrm
index_of.hpp8990644editdlrm
inherit.hpp56700644editdlrm
inherit_linearly.hpp9660644editdlrm
insert.hpp10300644editdlrm
inserter.hpp6480644editdlrm
insert_fwd.hpp5850644editdlrm
insert_range.hpp10810644editdlrm
insert_range_fwd.hpp6140644editdlrm
int.hpp5200644editdlrm
integral_c.hpp15090644editdlrm
integral_c_fwd.hpp8870644editdlrm
integral_c_tag.hpp7250644editdlrm
int_fwd.hpp6780644editdlrm
is_placeholder.hpp14830644editdlrm
is_sequence.hpp26440644editdlrm
iterator_category.hpp8200644editdlrm
iterator_range.hpp9430644editdlrm
iterator_tags.hpp7640644editdlrm
iter_fold.hpp12720644editdlrm
iter_fold_if.hpp30720644editdlrm
joint_view.hpp16560644editdlrm
key_type.hpp10640644editdlrm
key_type_fwd.hpp6250644editdlrm
lambda.hpp7800644editdlrm
lambda_fwd.hpp12010644editdlrm
less.hpp5110644editdlrm
less_equal.hpp5360644editdlrm
list.hpp16080644editdlrm
list_c.hpp18140644editdlrm
logical.hpp5020644editdlrm
long.hpp5250644editdlrm
long_fwd.hpp6840644editdlrm
lower_bound.hpp36050644editdlrm
map.hpp15930644editdlrm
max.hpp4320644editdlrm
max_element.hpp15800644editdlrm
min.hpp4320644editdlrm
minus.hpp5150644editdlrm
min_element.hpp8150644editdlrm
min_max.hpp9080644editdlrm
modulus.hpp5520644editdlrm
multiplies.hpp13410644editdlrm
negate.hpp18790644editdlrm
next.hpp4380644editdlrm
next_prior.hpp10470644editdlrm
not.hpp10290644editdlrm
not_equal_to.hpp5440644editdlrm
numeric_cast.hpp12210644editdlrm
O1_size.hpp10030644editdlrm
O1_size_fwd.hpp5590644editdlrm
or.hpp16230644editdlrm
order.hpp10410644editdlrm
order_fwd.hpp6120644editdlrm
pair.hpp15010644editdlrm
pair_view.hpp43550644editdlrm
partition.hpp10460644editdlrm
placeholders.hpp24500644editdlrm
plus.hpp5110644editdlrm
pop_back.hpp9370644editdlrm
pop_back_fwd.hpp5640644editdlrm
pop_front.hpp9460644editdlrm
pop_front_fwd.hpp5690644editdlrm
print.hpp16690644editdlrm
prior.hpp4410644editdlrm
protect.hpp12370644editdlrm
push_back.hpp12890644editdlrm
push_back_fwd.hpp5810644editdlrm
push_front.hpp13010644editdlrm
push_front_fwd.hpp5860644editdlrm
quote.hpp36340644editdlrm
range_c.hpp11240644editdlrm
remove.hpp10330644editdlrm
remove_if.hpp18920644editdlrm
replace.hpp11690644editdlrm
replace_if.hpp17950644editdlrm
reverse.hpp7590644editdlrm
reverse_fold.hpp12820644editdlrm
reverse_iter_fold.hpp14970644editdlrm
same_as.hpp11240644editdlrm
sequence_tag.hpp29890644editdlrm
sequence_tag_fwd.hpp5880644editdlrm
set.hpp15930644editdlrm
set_c.hpp17960644editdlrm
shift_left.hpp5600644editdlrm
shift_right.hpp5640644editdlrm
single_view.hpp8130644editdlrm
size.hpp10080644editdlrm
sizeof.hpp7660644editdlrm
size_fwd.hpp5440644editdlrm
size_t.hpp6170644editdlrm
size_t_fwd.hpp7230644editdlrm
sort.hpp6140644editdlrm
stable_partition.hpp17090644editdlrm
string.hpp245470644editdlrm
switch.hpp11870644editdlrm
tag.hpp10230644editdlrm
times.hpp5150644editdlrm
transform.hpp42020644editdlrm
transform_view.hpp11240644editdlrm
unique.hpp20530644editdlrm
unpack_args.hpp35630644editdlrm
upper_bound.hpp35570644editdlrm
value_type.hpp10840644editdlrm
value_type_fwd.hpp6350644editdlrm
vector.hpp16440644editdlrm
vector_c.hpp19320644editdlrm
void.hpp16080644editdlrm
void_fwd.hpp5990644editdlrm
zip_view.hpp15420644editdlrm
Edit: /usr/include/boost/mpl/bind.hpp (14951B)
#if !defined(BOOST_PP_IS_ITERATING) ///// header body #ifndef BOOST_MPL_BIND_HPP_INCLUDED #define BOOST_MPL_BIND_HPP_INCLUDED // Copyright Peter Dimov 2001 // Copyright Aleksey Gurtovoy 2001-2004 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/mpl for documentation. // $Id$ // $Date$ // $Revision$ #if !defined(BOOST_MPL_PREPROCESSING_MODE) # include # include # include # include # include # include # include # include # include # include # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) # include # endif #endif #include #include #include #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) # if defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT) # define BOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp # else # define BOOST_MPL_PREPROCESSED_HEADER bind.hpp # endif # include #else # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include namespace boost { namespace mpl { // local macros, #undef-ined at the end of the header # define AUX778076_APPLY \ BOOST_PP_CAT(apply_wrap,BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \ /**/ # if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS) # define AUX778076_DMC_PARAM() , int dummy_ # else # define AUX778076_DMC_PARAM() # endif # define AUX778076_BIND_PARAMS(param) \ BOOST_MPL_PP_PARAMS( \ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \ , param \ ) \ /**/ # define AUX778076_BIND_DEFAULT_PARAMS(param, value) \ BOOST_MPL_PP_DEFAULT_PARAMS( \ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \ , param \ , value \ ) \ /**/ # define AUX778076_BIND_N_PARAMS(n, param) \ BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \ /**/ # define AUX778076_BIND_N_SPEC_PARAMS(n, param, def) \ BOOST_PP_COMMA_IF(n) \ BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \ /**/ #if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) # define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \ AUX778076_BIND_DEFAULT_PARAMS(param, value) \ /**/ #else # define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \ AUX778076_BIND_PARAMS(param) \ /**/ #endif namespace aux { #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename T, AUX778076_BIND_PARAMS(typename U) > struct resolve_bind_arg { typedef T type; }; # if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT) template< typename T , typename Arg > struct replace_unnamed_arg { typedef Arg next; typedef T type; }; template< typename Arg > struct replace_unnamed_arg< arg<-1>,Arg > { typedef typename Arg::next next; typedef Arg type; }; # endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT template< BOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U) > struct resolve_bind_arg< arg,AUX778076_BIND_PARAMS(U) > { typedef typename AUX778076_APPLY, AUX778076_BIND_PARAMS(U)>::type type; }; #if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) template< typename F, AUX778076_BIND_PARAMS(typename T), AUX778076_BIND_PARAMS(typename U) > struct resolve_bind_arg< bind,AUX778076_BIND_PARAMS(U) > { typedef bind f_; typedef typename AUX778076_APPLY::type type; }; #endif #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // agurt, 15/jan/02: it's not a intended to be used as a function class, and // MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't // work), so I went with the 'result_' here, and in all other similar cases template< bool > struct resolve_arg_impl { template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_ { typedef T type; }; }; template<> struct resolve_arg_impl { template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_ { typedef typename AUX778076_APPLY< T , AUX778076_BIND_PARAMS(U) >::type type; }; }; // for 'resolve_bind_arg' template< typename T > struct is_bind_template; template< typename T, AUX778076_BIND_PARAMS(typename U) > struct resolve_bind_arg : resolve_arg_impl< is_bind_template::value > ::template result_< T,AUX778076_BIND_PARAMS(U) > { }; # if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT) template< typename T > struct replace_unnamed_arg_impl { template< typename Arg > struct result_ { typedef Arg next; typedef T type; }; }; template<> struct replace_unnamed_arg_impl< arg<-1> > { template< typename Arg > struct result_ { typedef typename next::type next; typedef Arg type; }; }; template< typename T, typename Arg > struct replace_unnamed_arg : replace_unnamed_arg_impl::template result_ { }; # endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT // agurt, 10/mar/02: the forward declaration has to appear before any of // 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it template< BOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser; aux::no_tag is_bind_helper(...); template< typename T > aux::no_tag is_bind_helper(protect*); // overload for "main" form // agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload // in case if we use 'aux::type_wrapper< bind<...> >' here, and all // 'bind' instantiations form a complete type anyway #if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) template< typename F, AUX778076_BIND_PARAMS(typename T) > aux::yes_tag is_bind_helper(bind*); #endif template< BOOST_MPL_AUX_NTTP_DECL(int, N) > aux::yes_tag is_bind_helper(arg*); template< bool is_ref_ = true > struct is_bind_template_impl { template< typename T > struct result_ { BOOST_STATIC_CONSTANT(bool, value = false); }; }; template<> struct is_bind_template_impl { template< typename T > struct result_ { BOOST_STATIC_CONSTANT(bool, value = sizeof(aux::is_bind_helper(static_cast(0))) == sizeof(aux::yes_tag) ); }; }; template< typename T > struct is_bind_template : is_bind_template_impl< ::boost::detail::is_reference_impl::value > ::template result_ { }; #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } // namespace aux #define BOOST_PP_ITERATION_PARAMS_1 \ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, )) #include BOOST_PP_ITERATE() #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ && !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) /// if_/eval_if specializations # define AUX778076_SPEC_NAME if_ # define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, )) # include BOOST_PP_ITERATE() #if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS) # define AUX778076_SPEC_NAME eval_if # define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, )) # include BOOST_PP_ITERATE() #endif #endif // real C++ version is already taken care of #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ && !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) namespace aux { // apply_count_args #define AUX778076_COUNT_ARGS_PREFIX bind #define AUX778076_COUNT_ARGS_DEFAULT na #define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY #include } // bind template< typename F, AUX778076_BIND_PARAMS(typename T) AUX778076_DMC_PARAM() > struct bind : aux::bind_chooser< aux::bind_count_args::value >::template result_< F,AUX778076_BIND_PARAMS(T) >::type { }; BOOST_MPL_AUX_ARITY_SPEC( BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY) , bind ) BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC( BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY) , bind ) #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION # undef AUX778076_BIND_NESTED_DEFAULT_PARAMS # undef AUX778076_BIND_N_SPEC_PARAMS # undef AUX778076_BIND_N_PARAMS # undef AUX778076_BIND_DEFAULT_PARAMS # undef AUX778076_BIND_PARAMS # undef AUX778076_DMC_PARAM # undef AUX778076_APPLY }} #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS #endif // BOOST_MPL_BIND_HPP_INCLUDED ///// iteration, depth == 1 // For gcc 4.4 compatability, we must include the // BOOST_PP_ITERATION_DEPTH test inside an #else clause. #else // BOOST_PP_IS_ITERATING #if BOOST_PP_ITERATION_DEPTH() == 1 # define i_ BOOST_PP_FRAME_ITERATION(1) #if defined(AUX778076_SPEC_NAME) // lazy metafunction specialization template< template< BOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag > struct BOOST_PP_CAT(quote,i_); template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME; template< typename Tag AUX778076_BIND_N_PARAMS(i_, typename T) > struct BOOST_PP_CAT(bind,i_)< BOOST_PP_CAT(quote,i_) AUX778076_BIND_N_PARAMS(i_,T) > { template< AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na) > struct apply { private: typedef mpl::arg<1> n1; # define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, )) # include BOOST_PP_ITERATE() typedef typename AUX778076_SPEC_NAME< typename t1::type , BOOST_MPL_PP_EXT_PARAMS(2, BOOST_PP_INC(i_), t) >::type f_; public: typedef typename f_::type type; }; }; #undef AUX778076_SPEC_NAME #else // AUX778076_SPEC_NAME template< typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM() > struct BOOST_PP_CAT(bind,i_) { template< AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na) > struct apply { private: # if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT) typedef aux::replace_unnamed_arg< F,mpl::arg<1> > r0; typedef typename r0::type a0; typedef typename r0::next n1; typedef typename aux::resolve_bind_arg::type f_; /// # else typedef typename aux::resolve_bind_arg::type f_; # endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT # if i_ > 0 # define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, )) # include BOOST_PP_ITERATE() # endif public: # define AUX778076_ARG(unused, i_, t) \ BOOST_PP_COMMA_IF(i_) \ typename BOOST_PP_CAT(t,BOOST_PP_INC(i_))::type \ /**/ typedef typename BOOST_PP_CAT(apply_wrap,i_)< f_ BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t) >::type type; # undef AUX778076_ARG }; }; namespace aux { #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U) > struct resolve_bind_arg< BOOST_PP_CAT(bind,i_),AUX778076_BIND_PARAMS(U) > { typedef BOOST_PP_CAT(bind,i_) f_; typedef typename AUX778076_APPLY::type type; }; #else template< typename F AUX778076_BIND_N_PARAMS(i_, typename T) > aux::yes_tag is_bind_helper(BOOST_PP_CAT(bind,i_)*); #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } // namespace aux BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_)) BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_)) # if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) # if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) #if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY /// primary template (not a specialization!) template< typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM() > struct bind : BOOST_PP_CAT(bind,i_) { }; #else template< typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM() > struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) > : BOOST_PP_CAT(bind,i_) { }; #endif # else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION namespace aux { template<> struct bind_chooser { template< typename F, AUX778076_BIND_PARAMS(typename T) > struct result_ { typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type; }; }; } // namespace aux # endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION # endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE #endif // AUX778076_SPEC_NAME # undef i_ ///// iteration, depth == 2 #elif BOOST_PP_ITERATION_DEPTH() == 2 # define j_ BOOST_PP_FRAME_ITERATION(2) # if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT) typedef aux::replace_unnamed_arg< BOOST_PP_CAT(T,j_),BOOST_PP_CAT(n,j_) > BOOST_PP_CAT(r,j_); typedef typename BOOST_PP_CAT(r,j_)::type BOOST_PP_CAT(a,j_); typedef typename BOOST_PP_CAT(r,j_)::next BOOST_PP_CAT(n,BOOST_PP_INC(j_)); typedef aux::resolve_bind_arg BOOST_PP_CAT(t,j_); /// # else typedef aux::resolve_bind_arg< BOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_); # endif # undef j_ #endif // BOOST_PP_ITERATION_DEPTH() #endif // BOOST_PP_IS_ITERATING