1 2 #ifndef BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED 3 #define BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED 4 5 // Copyright Aleksey Gurtovoy 2001-2004 6 // 7 // Distributed under the Boost Software License, Version 1.0. 8 // (See accompanying file LICENSE_1_0.txt or copy at 9 // http://www.boost.org/LICENSE_1_0.txt) 10 // 11 // See http://www.boost.org/libs/mpl for documentation. 12 13 // $Id: arity_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ 14 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $ 15 // $Revision: 49267 $ 16 17 #include <boost/mpl/int.hpp> 18 #include <boost/mpl/limits/arity.hpp> 19 #include <boost/mpl/aux_/config/dtp.hpp> 20 #include <boost/mpl/aux_/preprocessor/params.hpp> 21 #include <boost/mpl/aux_/arity.hpp> 22 #include <boost/mpl/aux_/template_arity_fwd.hpp> 23 #include <boost/mpl/aux_/config/ttp.hpp> 24 #include <boost/mpl/aux_/config/lambda.hpp> 25 #include <boost/mpl/aux_/config/static_constant.hpp> 26 27 #if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) 28 # define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) \ 29 namespace aux { \ 30 template< BOOST_MPL_AUX_NTTP_DECL(int, N), BOOST_MPL_PP_PARAMS(i,type T) > \ 31 struct arity< \ 32 name< BOOST_MPL_PP_PARAMS(i,T) > \ 33 , N \ 34 > \ 35 { \ 36 BOOST_STATIC_CONSTANT(int \ 37 , value = BOOST_MPL_LIMIT_METAFUNCTION_ARITY \ 38 ); \ 39 }; \ 40 } \ 41 /**/ 42 #else 43 # define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) /**/ 44 #endif 45 46 # define BOOST_MPL_AUX_ARITY_SPEC(i,name) \ 47 BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,typename,name) \ 48 /**/ 49 50 51 #if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \ 52 && !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) 53 # define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) \ 54 namespace aux { \ 55 template< BOOST_MPL_PP_PARAMS(i,typename T) > \ 56 struct template_arity< name<BOOST_MPL_PP_PARAMS(i,T)> > \ 57 : int_<i> \ 58 { \ 59 }; \ 60 } \ 61 /**/ 62 #else 63 # define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/ 64 #endif 65 66 67 #endif // BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED 68