命名空间
变体
操作

C++ 命名需求: DefaultConstructible

来自 cppreference.com
< cpp‎ | named req
 
 
C++ 命名需求
 

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

内容

[编辑] 要求

如果以下所有语句和表达式都有效,并且具有其指定的效应,则类型 T 满足 DefaultConstructible

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

T{}

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

[编辑] 注释

对于非聚合类类型的对象,必须定义一个公共 默认构造函数(用户定义或隐式定义)以满足 DefaultConstructible

非类对象类型的非 const 对象总是 DefaultConstructible

Const 非类类型不是 DefaultConstructible

如果任何成员是类对象类型的对象,则 Const 聚合类型不是 DefaultConstructible

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

[编辑] 缺陷报告

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

DR 应用于 发布的行为 正确行为
LWG 724 C++98 DefaultConstructible 的要求缺失 添加
LWG 2170 C++98 使用空的初始化器初始化 DefaultConstructible 类型对象的
空初始化器只能导致值初始化
还可以导致
聚合初始化

[编辑] 参见

检查类型是否具有默认构造函数
(类模板) [编辑]
指定类型的对象可以被默认构造
(概念) [编辑]