C++类型萃取编写技巧(7)

template<typename Classtype,typename R,
    typename Arg18,
    typename Arg17,
    typename Arg16,
    typename Arg15,
    typename Arg14,
    typename Arg13,
    typename Arg12,
    typename Arg11,
    typename Arg10,
    typename Arg9,
    typename Arg8,typename Arg7,typename Arg6,typename Arg5,typename Arg4,typename Arg3,typename Arg2,typename Arg1>
struct mfunction_traits_helper<R(Classtype::*)(Arg18,Arg17,Arg16,Arg15,Arg14,Arg13,Arg12,Arg11,Arg10,Arg9,Arg8,Arg7,Arg6,Arg5,Arg4,Arg3,Arg2,Arg1)>
{
    typedef Arg18 arg18;
    typedef Arg17 arg17;
    typedef Arg16 arg16;
    typedef Arg15 arg15;
    typedef Arg14 arg14;
    typedef Arg13 arg13;
    typedef Arg11 arg11;
    typedef Arg10 arg10;
    typedef Arg9 arg9;
    typedef Arg8 arg8;
    typedef Arg7 arg7;
    typedef Arg6 arg6;
    typedef Arg5 arg5;
    typedef Arg4 arg4;
    typedef Arg3 arg3;
    typedef Arg2 arg2;
    typedef Arg1 arg1;

enum{arity = 18};
    typedef R result_type;
    typedef Classtype class_type;
};

template<typename Classtype,typename R,
    typename Arg19,
    typename Arg18,
    typename Arg17,
    typename Arg16,
    typename Arg15,
    typename Arg14,
    typename Arg13,
    typename Arg12,
    typename Arg11,
    typename Arg10,
    typename Arg9,
    typename Arg8,typename Arg7,typename Arg6,typename Arg5,typename Arg4,typename Arg3,typename Arg2,typename Arg1>
struct mfunction_traits_helper<R(Classtype::*)(Arg19,Arg18,Arg17,Arg16,Arg15,Arg14,Arg13,Arg12,Arg11,Arg10,Arg9,Arg8,Arg7,Arg6,Arg5,Arg4,Arg3,Arg2,Arg1)>
{
    typedef Arg19 arg19;
    typedef Arg18 arg18;
    typedef Arg17 arg17;
    typedef Arg16 arg16;
    typedef Arg15 arg15;
    typedef Arg14 arg14;
    typedef Arg13 arg13;
    typedef Arg11 arg11;
    typedef Arg10 arg10;
    typedef Arg9 arg9;
    typedef Arg8 arg8;
    typedef Arg7 arg7;
    typedef Arg6 arg6;
    typedef Arg5 arg5;
    typedef Arg4 arg4;
    typedef Arg3 arg3;
    typedef Arg2 arg2;
    typedef Arg1 arg1;

enum{arity = 19};
    typedef R result_type;
    typedef Classtype class_type;
};

template<typename Classtype,typename R,
    typename Arg20,
    typename Arg19,
    typename Arg18,
    typename Arg17,
    typename Arg16,
    typename Arg15,
    typename Arg14,
    typename Arg13,
    typename Arg12,
    typename Arg11,
    typename Arg10,
    typename Arg9,
    typename Arg8,typename Arg7,typename Arg6,typename Arg5,typename Arg4,typename Arg3,typename Arg2,typename Arg1>
struct mfunction_traits_helper<R(Classtype::*)(Arg20,Arg19,Arg18,Arg17,Arg16,Arg15,Arg14,Arg13,Arg12,Arg11,Arg10,Arg9,Arg8,Arg7,Arg6,Arg5,Arg4,Arg3,Arg2,Arg1)>
{
    typedef Arg20 arg20;
    typedef Arg19 arg19;
    typedef Arg18 arg18;
    typedef Arg17 arg17;
    typedef Arg16 arg16;
    typedef Arg15 arg15;
    typedef Arg14 arg14;
    typedef Arg13 arg13;
    typedef Arg11 arg11;
    typedef Arg10 arg10;
    typedef Arg9 arg9;
    typedef Arg8 arg8;
    typedef Arg7 arg7;
    typedef Arg6 arg6;
    typedef Arg5 arg5;
    typedef Arg4 arg4;
    typedef Arg3 arg3;
    typedef Arg2 arg2;
    typedef Arg1 arg1;

enum{arity = 20};
    typedef R result_type;
    typedef Classtype class_type;
};

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4b11dba9eca97ff5bf235e221cf6c9e1.html