http://www.codeproject.com/KB/cpp/CppDelegateImplementation.aspx?fid=420921&fr=11#xx0xx
看了这篇文章之后,编译了一下,报错,错误信息如题
test.cpp:37:1: pasting "," and "typename" does not give a valid preprocessing token做了个简单的测试,代码如下:/*
 定义不同的数字可以使下面的someStruct的() 里支持不同的参数个数
 比如这里定义成2,下面的Some类就相当于
struct Some {
template<typename A1, typename A2>
struct someStruct {
void operator() (A1 a1, A2 a2) const {
}
};
}; 如果这里定义成3,下面的Some类就相当于
struct Some {
template<typename A1, typename A2, typename A3>
struct someStruct {
void operator() (A1 a1, A2 a2, A3 a3) const {
}
};
};
*/
#define PARAM_COUNT 2  #define COMPILE_TIME_JOIN(X, Y) X##Y#define MAKE_PARAMS1_2(t)    t##1, ##t##2
#define MAKE_PARAMS2_2(t1, t2)   t1##1 t2##1, t1##2 t2##2#define PARAMS             MAKE_PARAMS2(PARAM_COUNT,A,a)#define MAKE_PARAMS1(n, t)         COMPILE_TIME_JOIN(MAKE_PARAMS1_, n) (t)
#define MAKE_PARAMS2(n, t1, t2)    COMPILE_TIME_JOIN(MAKE_PARAMS2_, n) (t1, t2)#define TEMPLATE_PARAMS    MAKE_PARAMS1(2, typename A)struct Some {
template<TEMPLATE_PARAMS>
struct someStruct {
void operator() (PARAMS) const {
}
};
};int main() { return 0;
}
请问是啥道理