这个程序如何编译良好?
int main() {
void(); // Does this create a "void" object here?
}
我已经在 MSVC 和 GCC 下进行了测试。但void
是一个不完整的类型。当您对任何其他不完整的用户定义类型执行相同操作时,
class Incomplete;
int main() {
Incomplete(); // Error saying "Incomplete" is incomplete.
}
C++11 §5.2.3 [expr.type.conv]/2 详细介绍(重点是我的):
表达式 T(),其中 T 是非数组完整对象类型或(可能是 cv 限定的)void 类型的简单类型说明符或类型名称说明符,创建指定类型的纯右值,其值是通过对 T 类型的对象进行值初始化(8.5)而产生的值;void() 情况下不进行初始化.
这只是类型的纯右值void
。没有特殊的初始化或类似的东西int()
将有。纯右值是这样的true
, or nullptr
, or 2
。该表达式相当于2;
, 但对于void
代替int
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)