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