C++ 命名要求: EmplaceConstructible (自 C++11 起)
來自 cppreference.com
指定給定型別的物件可以透過給定的分配器,在未初始化的儲存中,從給定的一組引數構造。
[編輯] 要求
如果給定以下條件,型別 T
是可 就地構造 (EmplaceConstructible) 到 容器 (Container) X
(其 value_type
與 T
相同) 的,從引數 args
:
A
|
一個分配器型別 |
m
|
一個 A 型別的左值 |
p
|
由容器準備的 T* 型別指標 |
args
|
零個或多個引數 |
其中 X::allocator_type
與 std::allocator_traits<A>::rebind_alloc<T> 相同,
以下表達式形式良好:
std::allocator_traits<A>::construct(m, p, args);
如果 X
不支援分配器或是一個 std::basic_string 特化,則該術語的定義就像 A
是 std::allocator<T> 一樣,但不需要建立分配器物件,並且不會例項化 std::allocator 的使用者定義特化。
[編輯] 注意
儘管直到 C++23 都要求在構造 std::basic_string 的元素時使用自定義的 construct
,但所有實現都只使用了預設機制。此要求已透過 P1072R10 更正,以符合現有實踐。
[編輯] 另請參閱
CopyInsertable(可複製插入) | |
MoveInsertable(可移動插入) |