1 2 // (C) Copyright Tobias Schwinger 3 // 4 // Use modification and distribution are subject to the boost Software License, 5 // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). 6 7 //------------------------------------------------------------------------------ 8 9 // no include guards, this file is intended for multiple inclusion 10 11 // input: BOOST_FT_syntax type macro to use 12 // input: BOOST_FT_cc empty or cc specifier 13 // input: BOOST_FT_ell empty or "..." 14 // input: BOOST_FT_cv empty or cv qualifiers 15 // input: BOOST_FT_flags single decimal integer encoding the flags 16 // output: BOOST_FT_n number of component types (arity+1) 17 // output: BOOST_FT_arity current arity 18 // output: BOOST_FT_type macro that expands to the type 19 // output: BOOST_FT_tplargs(p) template arguments with given prefix 20 // output: BOOST_FT_params(p) parameters with given prefix 21 22 template< typename R > 23 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,0> ::type 24 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (BOOST_FT_nullary_param BOOST_FT_ell) BOOST_FT_cv); 25 template< typename R , typename T0 > 26 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,1> ::type 27 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 BOOST_FT_ell) BOOST_FT_cv); 28 template< typename R , typename T0 , typename T1 > 29 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,2> ::type 30 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 BOOST_FT_ell) BOOST_FT_cv); 31 template< typename R , typename T0 , typename T1 , typename T2 > 32 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,3> ::type 33 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 BOOST_FT_ell) BOOST_FT_cv); 34 template< typename R , typename T0 , typename T1 , typename T2 , typename T3 > 35 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,4> ::type 36 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 BOOST_FT_ell) BOOST_FT_cv); 37 template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > 38 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,5> ::type 39 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 BOOST_FT_ell) BOOST_FT_cv); 40 template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > 41 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,6> ::type 42 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 BOOST_FT_ell) BOOST_FT_cv); 43 template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > 44 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,7> ::type 45 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 BOOST_FT_ell) BOOST_FT_cv); 46 template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > 47 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,8> ::type 48 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 BOOST_FT_ell) BOOST_FT_cv); 49 template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > 50 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,9> ::type 51 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 BOOST_FT_ell) BOOST_FT_cv); 52 template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > 53 typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,10> ::type 54 classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 BOOST_FT_ell) BOOST_FT_cv); 55 56