C++ 命名要求: DefaultConstructible
来自 cppreference.cn
指定该类型的一个实例可以被默认构造。
目录 |
[编辑] 要求
类型 T
满足 DefaultConstructible,如果所有以下语句和表达式都是有效的并具有其指定的效果
表达式/语句 | 后置条件 |
---|---|
T u; | 对象 u 被 默认初始化。 |
T u{}; | 对象 u 被 值初始化 或 聚合初始化。 |
T()
T{} |
类型 T 的临时对象被 值初始化 或 聚合初始化。 |
[编辑] 注意
对于非聚合类类型的对象,必须定义一个公共的默认构造函数(无论是用户定义的还是隐式定义的)才能满足 DefaultConstructible。
非类的非类对象类型的非 const 对象总是 DefaultConstructible。
const 非类类型不是 DefaultConstructible。
如果 const 聚合类型的任何成员是非类类型的对象,则它们不是 DefaultConstructible。
非对象类型(函数类型、引用类型和(可能带 cv 限定符的)类型 void)以及 const 非对象类型从不 DefaultConstructible。
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 724 | C++98 | 缺少 DefaultConstructible 的要求 | 已添加 |
LWG 2170 | C++98 | 用空初始化器初始化 DefaultConstructible 类型的对象 只能导致值初始化 |
也可能导致 聚合初始化 |
[编辑] 参阅
检查类型是否具有默认构造函数 (类模板) | |
(C++20) |
指定类型的对象可以默认构造 (概念) |