Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2013. The current version is 1.89.0.
| Front Page / Macros / Broken Compiler Workarounds / BOOST_MPL_AUX_LAMBDA_SUPPORT |
#define BOOST_MPL_AUX_LAMBDA_SUPPORT(arity, fun, params) \ unspecified token sequence \ /**/
Enables metafunction fun for the use in Lambda Expressions on compilers that don't support partial template specialization or/and template template parameters. Expands to nothing on conforming compilers.
#include <boost/mpl/aux_/lambda_support.hpp>
| Parameter | Requirement | Description |
|---|---|---|
| arity | An integral constant | The metafunction's arity, i.e. the number of its template parameters, including the defaults. |
| fun | A legal identifier token | The metafunction's name. |
| params | A PP-tuple | A tuple of the metafunction's parameter names, in their original order, including the defaults. |
For any integral constant n, a Metafunction fun, and arbitrary types A1,... An:
template< typename A1,... typename An > struct fun
{
// ...
BOOST_MPL_AUX_LAMBDA_SUPPORT(n, fun, (A1,...An))
};
| Precondition: | Appears in fun's scope, immediately followed by the scope-closing bracket (}). |
|---|---|
| Return type: | None. |
| Semantics: | Expands to nothing and has no effect on conforming compilers. On compilers that don't support partial template specialization or/and template template parameters expands to an unspecified token sequence enabling fun to participate in Lambda Expressions with the semantics described in this manual. |
template< typename T, typename U = int > struct f
{
typedef T type[sizeof(U)];
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, f, (T,U))
};
typedef apply1< f<char,_1>,long >::type r;
BOOST_MPL_ASSERT(( is_same< r, char[sizeof(long)] > ));