以下语法有什么区别:
template<typename T>
struct A { ... };
A<void (*)()> o1; // <--- ok
A<void()> o2; // <----- ??
我想知道除了库之外的第二种语法的实际用途(我检查了我们不能在A
中声明void()
的对象)。我已经提到了这个问题,但这无济于事。
void()
是不带参数且不返回任何内容的函数类型。
void(*)()
是指向不带任何参数且不返回任何内容的函数的指针的类型。
作为使用void()
和有用的示例,请查看std::function
- 它使用的语法比您必须传入函数指针签名要好得多。 当您的意思是"我想告诉此模板类调用的签名"时,可以使用完全相同的语法。
主要是,这只是句法糖。 但糖是生活的调味品。