C++ 命名要求: DefaultConstructible
指定类型实例可以默认构造。
要求
如果满足以下条件,类型 T 满足 DefaultConstructible:
给定
u
, 任意标识符
以下表达式必须有效并具有其指定的效果
pub | 表达式 | 后置条件 |
pub | T u; | 对象 u 被默认初始化 |
pub | T u; | 对象 u 被值初始化或聚合初始化 |
pub | T() T{} | 类型 T 的临时对象被值初始化或聚合初始化 |
备注
对于非聚合类类型的对象,必须定义公共默认构造函数(无论是用户定义还是隐式定义)才能满足 DefaultConstructible。
非类对象类型的非 const 对象始终是 DefaultConstructible。
const 非类类型不是 DefaultConstructible。
如果 const 聚合类型的任何成员是非类对象,则它们不是 DefaultConstructible。
非对象类型(函数类型、引用类型和(可能 cv 限定的)void 类型)以及 const 非对象类型永远不是 DefaultConstructible
缺陷报告
以下改变行为的缺陷报告已追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 发布时的行为 | 正确行为 |
---|---|---|---|
LWG 724 | C++98 | DefaultConstructible 的要求缺失 | 已添加 |