【发布时间】:2014-12-15 14:44:47
【问题描述】:
在 C++14 中 void 是文字类型
一个类型是文字类型,如果它是:
——无效;或
——标量类型;或
——引用类型;或
——文字类型的数组;或
——具有以下所有属性的类类型(第 9 条):—— 它有一个微不足道的析构函数,
——它是一个聚合类型 (8.5.1) 或至少有一个 constexpr 不是复制或移动的构造函数或构造函数模板 构造函数,和
——它的所有非静态数据成员和基类都属于 非易失性文字类型。
在 C++11 中 void 不是文字类型
一个类型是文字类型,如果它是:
——标量类型;或
——引用类型,引用文字类型;或
——文字类型的数组;或
——具有以下所有属性的类类型(第 9 条):—— 它有一个微不足道的析构函数,
— 中的每个构造函数调用和完整表达式 非静态数据成员(如果有)的大括号或相等初始化器是 常量表达式(5.19),
——它是一个聚合类型 (8.5.1) 或至少有一个 constexpr 不是复制或移动的构造函数或构造函数模板 构造函数,和
——它所有的非静态数据成员和基类都是字面量的 类型。
那么为什么void 是文字类型呢?它有什么好处?
【问题讨论】: