名稱空間
變體
操作

C++ 命名要求: 可擦除 (自 C++11 起)

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




Container(容器)
容器元素
Erasable(可擦除)
(C++11)
迭代器 (Iterator)
流 I/O
格式化器
隨機數
併發
(C++11)
範圍
多維檢視
其他

 

指定一個給定 分配器 可以銷燬此型別的物件。

目錄

[編輯] 要求

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

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

如果表示式 std::allocator_traits<A>::destroy(m, p) 形式良好,則 T 可以從 X擦除

[編輯] 注意

所有 標準庫容器 都要求它們的值型別滿足 可擦除

對於預設分配器,此要求等同於 p->~T() 的有效性,它接受具有可訪問解構函式的類型別和所有標量型別,但拒絕陣列型別、函式型別、引用型別和 void

(C++20 前)

對於預設分配器,此要求等同於 std::destroy_at(p) 的有效性,它接受具有可訪問解構函式的類型別和所有標量型別,以及它們的陣列。

(C++20 起)

儘管要求在使用自定義 destroy 銷燬 std::basic_string 的元素時使用自定義 destroy,直到 C++23,所有實現都只使用預設機制。該要求透過 P1072R10 進行了更正,以匹配現有實踐。

[編輯] 缺陷報告

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

缺陷報告 應用於 釋出時的行為 正確的行為
N3346 C++11 沒有要求指定型別是否
其物件可以使用分配器銷燬
添加了要求

[編輯] 另請參閱

CopyInsertable(可複製插入)
MoveInsertable(可移動插入)
EmplaceConstructible(可就地構造)
Destructible(可析構)