繁体   English   中英

函数指针作为模板参数和函数签名作为模板参数之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM