[英]Difference between a function pointer as template argument and a function signature as template argument
以下语法有什么区别:
template<typename T>
struct A { ... };
A<void (*)()> o1; // <--- ok
A<void()> o2; // <----- ??
我想知道除了库之外的第二种语法的实际用法(我检查过我们不能在A
)中声明void()
对象。 我已经提到了这个问题 ,但这没有用。
void()
是不带参数的函数的类型,并且不返回任何内容。
void(*)()
是指向不带参数的函数的指针类型,并且不返回任何内容。
作为使用void()
的示例并且有用,请查看std::function
- 它使用的语法比传递函数指针签名要好得多。 当你的意思是“我想告诉这个模板类是一个调用的签名”时,你可以使用完全相同的语法。
主要是,这只是语法糖。 但糖是生活的调味品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.