C++ 具名要求:可默认构造 (DefaultConstructible)
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    指定该类型的对象可以默认构造。
要求
以下情况下,类型 T 满足可默认构造 (DefaultConstructible) :
给定
- 任意标识符 u,
 
下列表达式必须合法且拥有它指定的效果:
| 表达式 | 后条件 | 
|---|---|
| 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) 的要求 | 已补充 | 
参阅
|   检查类型是否有默认构造函数  (类模板)  | |
|    (C++20)  | 
  指定能默认构造一个类型的对象  (概念)  |