命名空间
变体
操作

C++ 命名要求: DefaultConstructible

来自 cppreference.cn
 
 
C++ 命名要求
基本
DefaultConstructible (默认可构造)
类型属性
库范围




Container (容器)
容器元素
Iterator (迭代器)
流 I/O
格式化器
随机数
并发
范围
多维视图
其他

 

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

目录

[编辑] 要求

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

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

T{}

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

[编辑] 注释

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

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

常量非类类型不是 DefaultConstructible

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

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

[编辑] 缺陷报告

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

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

[编辑] 参见

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