...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 / Macros / Configuration / BOOST_MPL_LIMIT_METAFUNCTION_ARITY |
#if !defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY) # define BOOST_MPL_LIMIT_METAFUNCTION_ARITY \ implementation-defined integral constant \ /**/ #endif
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]
#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!