Namespaces
Variants

C++ named requirements: DefaultConstructible

From cppreference.net
C++ named requirements

指定该类型的实例可被默认构造。

目录

要求

类型 T 满足 DefaultConstructible 当且仅当下列所有语句和表达式均有效且具有其指定效果:

表达式/语句 后置条件
T u ; 对象 u 默认初始化
T u { } ; 对象 u 值初始化 聚合初始化
T ( )

T { }

类型为 T 的临时对象被 值初始化 聚合初始化

注释

对于非聚合类类型的对象,必须定义(无论是用户定义还是隐式定义)一个公开的 默认构造函数 ,以满足 DefaultConstructible 要求。

非类对象类型的 非常量对象 始终是 DefaultConstructible

非常量非类类型不是 DefaultConstructible

常量聚合类型若其任何成员属于非类类型的对象,则不可 默认构造

非对象类型(函数类型、引用类型以及(可能带有 cv 限定符的) void 类型)以及常量非对象类型永远不满足 DefaultConstructible 要求。

缺陷报告

下列行为变更缺陷报告被追溯应用于先前发布的C++标准。

缺陷报告 适用标准 发布时行为 正确行为
LWG 724 C++98 缺少对 DefaultConstructible 类型的要求 已补充
LWG 2170 C++98 使用空初始化器初始化 DefaultConstructible 类型的对象
只能进行值初始化
也可进行
聚合初始化

另请参阅

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