C++ 具名要求:可默认构造 (DefaultConstructible)

来自cppreference.com
< cpp‎ | named req
 
 
C++ 具名要求
基础
DefaultConstructible
类型属性
库所属
容器
容器元素
(C++11)

迭代器
流 I/O
格式化
(C++20)
随机数
(C++11)    
并发
(C++11)
(C++11)
范围
其他
(C++11)


 

指定该类型的对象可以默认构造。

要求

以下情况下,类型 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) 的要求 已补充

参阅

检查类型是否有默认构造函数
(类模板)
指定能默认构造一个类型的对象
(概念)