The MPL Reference Manual: BOOST_MPL_LIMIT_METAFUNCTION_ARITY

Front Page / Macros / Configuration / BOOST_MPL_LIMIT_METAFUNCTION_ARITY

# BOOST_MPL_LIMIT_METAFUNCTION_ARITY

### Synopsis

    #if !defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
    #   define BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
            implementation-defined integral constant \
    /**/
    #endif

### Description

`BOOST_MPL_LIMIT_METAFUNCTION_ARITY` is an overridable configuration macro regulating the maximum supported arity of metafunctions and metafunction classes. In this implementation of the library, `BOOST_MPL_LIMIT_METAFUNCTION_ARITY` has a default value of 5. To override the default limit, define `BOOST_MPL_LIMIT_METAFUNCTION_ARITY` to the desired maximum arity before including any library header. [Note: Overriding will take effect only if the library is configured not to use preprocessed headers. See `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS` for more information. — end note]

### Example

    #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
    #define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 2
    #include <boost/mpl/apply.hpp>

    using namespace boost::mpl;

    template< typename T1, typename T2 > struct second
    {
        typedef T2 type;
    };

    template< typename T1, typename T2, typename T3 > struct third
    {
        typedef T3 type;
    };

    typedef apply< second<_1,_2_>,int,long >::type r1;
    // typedef apply< third<_1,_2_,_3>,int,long,float >::type r2; // error!

### See also

Macros, Configuration, `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`