使用超链接的C ++语法,解析decltype(void())
为:
decltype( expression )
decltype( assignment-expression )
decltype( conditional-expression )
...许多涉及操作顺序的步骤都在这里...
decltype( postfix-expression )
decltype( simple-type-specifier ( expression-listopt ) )
decltype( void() )
所以void()
是一种expression
在这里,尤其是postfix-expression
。
具体来说,引用2011 ISO C ++标准的5.2.3 [expr.type.conf]节第2段:
表达式
T()
,其中,T
是一种简单类型说明符或类型名称说明符用于非阵列的完整对象类型或(可能CV-合格)void
类型,创建指定的类型,这是值初始化(8.5的prvalue;无初始化完成void()
情况)。
所以void()
是类型的表达式void
,就如同int()
是类型的表达式int
(具有值0
)。显然,void表达式没有任何值,但是这里是的操作数decltype
,因此不对其进行求值。decltype
仅引用其操作数的类型,而不是其值。
decltype(void())
只是简单的引用类型的方法void
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句