C++ 名前付き要件: EmplaceConstructible (C++11 以降)
From cppreference.com
指定されたアロケータを使用して、初期化されていないストレージ内の型のオブジェクトを指定された引数から構築できることを示します。
[編集] 要件
型 T は、引数 args から Container X (その value_type は T と同一) に EmplaceConstructible であるとみなされるのは、以下が与えられた場合です。
A
|
アロケータ型 |
m
|
型 A の lvalue |
p
|
コンテナによって準備された T* 型のポインタ |
args
|
ゼロ個以上の引数 |
ここで、X::allocator_type は std::allocator_traits<A>::rebind_alloc<T> と同一であるとします。
以下の式がwell-formedである場合。
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 |