...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Front Page / Metafunctions / Composition and Argument Binding / Placeholders |
namespace placeholders { typedef unspecified _; typedef arg<1> _1; typedef arg<2> _2; ... typedef arg<n> _n; } using placeholders::_; using placeholders::_1; using placeholders::_2; ... using placeholders::_n;
A placeholder in a form _n is simply a synonym for the corresponding arg<n> specialization. The unnamed placeholder _ (underscore) carries special meaning in bind and lambda expressions, and does not have defined semantics outside of these contexts.
Placeholder names can be made available in the user namespace through using namespace mpl::placeholders; directive.
#include <boost/mpl/placeholders.hpp>
[Note: The include might be omitted when using placeholders to construct a Lambda Expression for passing it to MPL's own algorithm or metafunction: any library component that is documented to accept a lambda expression makes the placeholders implicitly available for the user code — end note]
None.
For any integral constant n in the range [1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY] and arbitrary types a1,... an:
typedef apply_wrapn<_n,a1,...an>::type x;
Return type: | A type. |
---|---|
Semantics: | Equivalent to typedef apply_wrapn< arg<n>,a1,...an >::type x; |
typedef apply_wrap5< _1,bool,char,short,int,long >::type t1; typedef apply_wrap5< _3,bool,char,short,int,long >::type t3; BOOST_MPL_ASSERT(( is_same< t1, bool > )); BOOST_MPL_ASSERT(( is_same< t3, short > ));