.. Macros/Broken Compiler Workarounds//BOOST_MPL_AUX_LAMBDA_SUPPORT BOOST_MPL_AUX_LAMBDA_SUPPORT ============================ Synopsis -------- .. parsed-literal:: #define BOOST_MPL_AUX_LAMBDA_SUPPORT(arity, fun, params) \\ |unspecified-token-seq| \\ /\*\*/ Description ----------- Enables metafunction ``fun`` for the use in |Lambda Expression|\ s on compilers that don't support partial template specialization or/and template template parameters. Expands to nothing on conforming compilers. Header ------ .. parsed-literal:: #include Parameters ---------- +---------------+-------------------------------+---------------------------------------------------+ | 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. | +---------------+-------------------------------+---------------------------------------------------+ Expression semantics -------------------- For any integral constant ``n``, a |Metafunction| ``fun``, and arbitrary types |A1...An|: .. parsed-literal:: template< typename A1,\ |...| typename A\ *n* > struct fun { // |...| BOOST_MPL_AUX_LAMBDA_SUPPORT(n, fun, (A1,\ |...|\ A\ *n*\ )) }; :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 Expression|\ s with the semantics described in this manual. Example ------- .. parsed-literal:: template< typename T, typename U = int > struct f { typedef T type[sizeof(U)]; BOOST_MPL_AUX_LAMBDA_SUPPORT(2, f, (T,U)) }; typedef apply\ ``1``\< f,long >::type r; BOOST_MPL_ASSERT(( is_same< r, char[sizeof(long)] > )); See also -------- |Macros|, |Metafunctions|, |Lambda Expression| .. |PP-tuple| replace:: `PP-tuple`__ __ http://www.boost.org/libs/preprocessor/doc/data/tuples.html