名稱空間
變體
操作

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

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




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

 

指定給定分配器可以在原地複製構造型別物件。

[編輯] 要求

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

型別 定義
T 一個物件型別
A 一個分配器型別
X 一個滿足以下所有條件的容器型別
定義
m 一個型別為 A 的左值
p 一個型別為 T* 的指標
表示式 定義
v 表示型別 T / const T 的左值,或型別 const T 的右值的表示式
expr std::allocator_traits<A>::construct(m, p, v)

如果滿足所有以下條件,則 TCopyInsertableX 中:

  • TMoveInsertableX 中。
  • expr 形式良好。
  • 評估 expr 不會改變 v 的值。
  • 評估 expr 後,v 的值等同於 *p

[編輯] 注意

如果 Astd::allocator<T>,則這將呼叫 placement new,如 ::new((void*)p) T(v)(直至 C++20)std::construct_at(p, v)(自 C++20 起)

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

[編輯] 缺陷報告

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

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 2177 C++11 評估 expr 沒有任何後置條件 已新增
LWG 3957 C++11 v 可以表示型別 T 的右值 已排除