1

我不明白模板参数之间的区别

template <class T>
class C
{
   T t;
};

void foo()
{
   C<void ()> c1; //isn't compiled
   C<void (*)()> c2;
}

void() 是什么类型?这种类型用于 boost::function..

4

3 回答 3

6

void()是一个函数类型。void(*)()是指针类型。在 C++ 中,你不能有函数类型的变量,所以当isT t;时不编译。Tvoid()

于 2013-04-25T10:15:46.730 回答
1

经过

C<void ()> c1;
C<void (*)()> c2;

编译器期望您将指针传递给函数签名。第一个不是指针。

于 2013-04-25T10:13:21.207 回答
1

第一个 void() 是一个函数,而第二个 void(*)() 是一个指向函数的指针。

于 2013-04-25T10:14:24.763 回答