【发布时间】:2021-09-18 04:08:44
【问题描述】:
在Wikipedia 我发现了这个:
A a( A() );
[This] 可以被消歧为
- 类 [
A] 的变量定义,采用类 [A] 的匿名实例或
- 一个函数的函数声明,它返回一个 [
A] 类型的对象,并接受一个(未命名)参数,该参数是一个返回类型 [A] 的函数(并且不接受任何输入)。
大多数程序员期望第一个,但 C++ 标准要求将其解释为第二个。
但是为什么呢?如果 C++ 社区的大多数人都期望前一种行为,为什么不将其作为标准呢?此外,如果您不考虑到解析的歧义,上述语法是一致的。
有人可以请教我吗?为什么标准会要求这样做?
【问题讨论】:
-
哪里有函数指针?
-
阅读错误信息——ideone.com/12sT80#view_edit_boxAren't function pointers of type
T (*)()? -
@templateboy:该消息具有误导性:在那种情况下,
a本质上已衰减为用于表达式a.f的函数指针,但a的声明本身无关带有函数指针。 -
@downvoter 我可以解释一下吗?
标签: c++ most-vexing-parse