名稱空間
變體
操作

C++ 命名要求: DefaultInsertable (自 C++11 起)

來自 cppreference.com
 
 
C++ 命名要求
基本
型別屬性
全庫範圍




Container(容器)
容器元素
DefaultInsertable(可預設插入)
(C++11)
迭代器 (Iterator)
流 I/O
格式化器
隨機數
併發
Ranges(範圍)
多維檢視
其他

 

指定給定分配器可以在原地預設構造該型別的物件。

目錄

[編輯] 要求

給定以下型別、值和表示式

型別 定義
T 一個物件型別
A 一個分配器型別
X 一個滿足以下所有條件的容器型別
定義
m 一個型別為 A 的左值
p 一個型別為 T* 的指標

如果表示式 std::allocator_traits<A>::construct(m, p) 格式良好,則 TDefaultInsertableX 中。

[編輯] 注意

預設情況下,這將對物件進行值初始化,如同 ::new((void*)p) T()(直至 C++20)std::construct_at(p)(自 C++20 起)

如果值初始化不合意,例如物件是非類型別且不需要清零,可以透過提供自定義 Allocator::construct 來避免。

儘管在 C++23 之前,要求在構造 std::basic_string 的元素時使用自定義的 construct,但所有實現都只使用了預設機制。此要求已透過 P1072R10 修正以符合現有實踐。

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
N3346 C++11 存在 CopyInsertableMoveInsertable 的要求
但缺少 DefaultInsertable
添加了該要求

[編輯] 參見

DefaultConstructible(可預設構造)
CopyInsertable(可複製插入)
MoveInsertable(可移動插入)
EmplaceConstructible(可就地構造)
Erasable(可擦除)