\是换行
##是连接算符
例如:
#define a(N) b##N
int main(int argc, char* argv[])
{
int bb3=5;
printf("%d",a(b3)); //等价于printf("%d",bb3);
return 0;
}
即可以将多个字符拼成一个变量名
template<typename F>
class ...
是定义模板类
typedef typename F::Param##N##T Type;
##就不多说了,是把Param和N和T代表的字符拼成一个,应该是一个类型名称
typedef 用来把typename F::Param##N##T起一个别名为Type,省得每次都写那么复杂,而且用Type意思也很清楚,但这种类型只有在UsedFunctorParam类的范围内可见,既有作用域,如果想在外面使用应该写成:UsedFunctorParam::Type