这是后续的this https://stackoverflow.com/questions/39278200/is-sizeofvoid-a-legal-expression问题,更准确地说是评论this https://stackoverflow.com/a/39278306/4987285 answer.
什么是void()
in decltype(void())
准确代表?
它代表函数类型、表达式还是其他什么?
Using a 超链接 C++ 语法 http://www.nongnu.org/hcb/#decltype-specifier,解析decltype(void())
is:
decltype( expression )
decltype( assignment-expression )
decltype( conditional-expression )
...这里有很多涉及操作顺序的步骤...
decltype( postfix-expression )
decltype( simple-type-specifier ( expression-listopt ) )
decltype( void() )
So void()
是一种expression http://www.nongnu.org/hcb/#expression在这里,特别是一个postfix-expression http://www.nongnu.org/hcb/#postfix-expression.
具体来说,引用 2011 ISO C++ 标准第 5.2.3 节 [expr.type.conf] 第 2 段:
表达方式T()
, where T
is a 简单类型说明符 or
类型名称说明符对于非数组完整对象类型或(可能是 cv 限定的)void
类型,创建一个纯右值
指定的类型,它是值初始化的(8.5;没有初始化
为void()
case).
So void()
是类型的表达式void
, 就像int()
是类型的表达式int
(有值0
)。显然 void 表达式没有值,但这里它的操作数是decltype
,所以不进行评估。decltype
仅指其操作数的类型,而不指其值。
decltype(void())
只是引用类型的详细方式void
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)