15,472
社区成员
发帖
与我相关
我的任务
分享
template<typename ... TT> class CXXX
CXXX<RECT, ICONINFO> temp
#include <tuple>
#define DELEGATE(TYPENAME_TEMPLATE_LIST,ARG_TYPE_LIST,ARG_PARAM_LIST,ARG_TYPE_PARAM_LIST) \
\
template<typename RET TYPENAME_TEMPLATE_LIST> \
class IFunction<RET(ARG_TYPE_LIST)> \
..........................
template<typename RET TYPENAME_TEMPLATE_LIST> \
class MyTest<RET(ARG_TYPE_LIST)> \
..........................
#define TYPENAME_TEMPLATE_LIST_0
#define TYPENAME_TEMPLATE_LIST_1 TYPENAME_TEMPLATE_LIST_0 ,typename TT1
#define TYPENAME_TEMPLATE_LIST_2 TYPENAME_TEMPLATE_LIST_1 ,typename TT2
#define TYPENAME_TEMPLATE_LIST_3 TYPENAME_TEMPLATE_LIST_2 ,typename TT3
#define ARG_TYPE_LIST_0
#define ARG_TYPE_LIST_1 TT1
#define ARG_TYPE_LIST_2 ARG_TYPE_LIST_1 ,TT2
#define ARG_TYPE_LIST_3 ARG_TYPE_LIST_2 ,TT3
#define ARG_PARAM_LIST_0
#define ARG_PARAM_LIST_1 at1
#define ARG_PARAM_LIST_2 ARG_PARAM_LIST_1 ,at2
#define ARG_PARAM_LIST_3 ARG_PARAM_LIST_2 ,at3
#define ARG_TYPE_PARAM_LIST_0
#define ARG_TYPE_PARAM_LIST_1 TT1 at1
#define ARG_TYPE_PARAM_LIST_2 ARG_TYPE_PARAM_LIST_1 ,TT2 at2
#define ARG_TYPE_PARAM_LIST_3 ARG_TYPE_PARAM_LIST_2 ,TT3 at3
DELEGATE(TYPENAME_TEMPLATE_LIST_0,ARG_TYPE_LIST_0,ARG_PARAM_LIST_0,ARG_TYPE_PARAM_LIST_0)
DELEGATE(TYPENAME_TEMPLATE_LIST_1,ARG_TYPE_LIST_1,ARG_PARAM_LIST_1,ARG_TYPE_PARAM_LIST_1)
DELEGATE(TYPENAME_TEMPLATE_LIST_2,ARG_TYPE_LIST_2,ARG_PARAM_LIST_2,ARG_TYPE_PARAM_LIST_2)
DELEGATE(TYPENAME_TEMPLATE_LIST_3,ARG_TYPE_LIST_3,ARG_PARAM_LIST_3,ARG_TYPE_PARAM_LIST_3)
#undef TYPENAME_TEMPLATE_LIST_0
#undef TYPENAME_TEMPLATE_LIST_1
#undef TYPENAME_TEMPLATE_LIST_2
#undef TYPENAME_TEMPLATE_LIST_3
#undef ARG_TYPE_LIST_0
#undef ARG_TYPE_LIST_1
#undef ARG_TYPE_LIST_2
#undef ARG_TYPE_LIST_3
#undef ARG_PARAM_LIST_0
#undef ARG_PARAM_LIST_1
#undef ARG_PARAM_LIST_2
#undef ARG_PARAM_LIST_3
#undef ARG_TYPE_PARAM_LIST_0
#undef ARG_TYPE_PARAM_LIST_1
#undef ARG_TYPE_PARAM_LIST_2
#undef ARG_TYPE_PARAM_LIST_3
template<std::size_t _Idx, typename... _Elements>
struct _Tuple_impl;
template<std::size_t _Idx>
struct _Tuple_impl<_Idx>
{
protected:
void _M_swap_impl(_Tuple_impl&) { /* no-op */ }
};
template<std::size_t _Idx, typename _Head, typename... _Tail>
struct _Tuple_impl<_Idx, _Head, _Tail...>
: public _Tuple_impl<_Idx + 1, _Tail...>,
template<typename... _Elements>
class tuple : public _Tuple_impl<0, _Elements...>
/* va_start example */
#include <stdio.h>
#include <stdarg.h>
void PrintFloats ( int amount, ...)
{
int i;
double val;
printf ("Floats passed: ");
va_list vl;
va_start(vl,amount);
for (i=0;i<amount;i++)
{
val=va_arg(vl,double);
printf ("\t%.2f",val);
}
va_end(vl);
printf ("\n");
}
int main ()
{
PrintFloats (3,3.14159,2.71828,1.41421);
return 0;
}