跳到主要内容

C++ 命名要求: DefaultConstructible

指定类型实例可以默认构造。

要求

如果满足以下条件,类型 T 满足 DefaultConstructible
给定

  • u, 任意标识符

以下表达式必须有效并具有其指定的效果

pub表达式后置条件
pubT u;对象 u 被默认初始化
pubT u;对象 u 被值初始化聚合初始化
pubT()
T{}
类型 T 的临时对象被值初始化聚合初始化

备注

对于非聚合类类型的对象,必须定义公共默认构造函数(无论是用户定义还是隐式定义)才能满足 DefaultConstructible

非类对象类型的非 const 对象始终是 DefaultConstructible

const 非类类型不是 DefaultConstructible

如果 const 聚合类型的任何成员是非类对象,则它们不是 DefaultConstructible

非对象类型(函数类型、引用类型和(可能 cv 限定的)void 类型)以及 const 非对象类型永远不是 DefaultConstructible

缺陷报告

以下改变行为的缺陷报告已追溯应用于先前发布的 C++ 标准。

DR应用于发布时的行为正确行为
LWG 724C++98DefaultConstructible 的要求缺失已添加

C++ 命名要求: DefaultConstructible

指定类型实例可以默认构造。

要求

如果满足以下条件,类型 T 满足 DefaultConstructible
给定

  • u, 任意标识符

以下表达式必须有效并具有其指定的效果

pub表达式后置条件
pubT u;对象 u 被默认初始化
pubT u;对象 u 被值初始化聚合初始化
pubT()
T{}
类型 T 的临时对象被值初始化聚合初始化

备注

对于非聚合类类型的对象,必须定义公共默认构造函数(无论是用户定义还是隐式定义)才能满足 DefaultConstructible

非类对象类型的非 const 对象始终是 DefaultConstructible

const 非类类型不是 DefaultConstructible

如果 const 聚合类型的任何成员是非类对象,则它们不是 DefaultConstructible

非对象类型(函数类型、引用类型和(可能 cv 限定的)void 类型)以及 const 非对象类型永远不是 DefaultConstructible

缺陷报告

以下改变行为的缺陷报告已追溯应用于先前发布的 C++ 标准。

DR应用于发布时的行为正确行为
LWG 724C++98DefaultConstructible 的要求缺失已添加