我不明白模板参数之间的区别
template <class T>
class C
{
T t;
};
void foo()
{
C<void ()> c1; //isn't compiled
C<void (*)()> c2;
}
void()的类型是什么?这种类型用于boost :: function ..
答案 0 :(得分:6)
void()
是一种函数类型。 void(*)()
是指针类型。在C ++中,您不能拥有函数类型的变量,因此当T t;
为T
时void()
不会编译。
答案 1 :(得分:1)
通过
C<void ()> c1;
C<void (*)()> c2;
编译器希望您将指针传递给函数签名。第一个不是指针。
答案 2 :(得分:1)
第一个void()是一个函数,而第二个void(*)()是一个指向函数的指针。