名前空間
変種
操作

C++ 名前付き要件: EmplaceConstructible (C++11 以降)

From cppreference.com
 
 
C++ 名前付き要件
 

指定されたアロケータを使用して、初期化されていないストレージ内の型のオブジェクトを指定された引数から構築できることを示します。

[編集] 要件

T は、引数 args から Container X (その value_typeT と同一) に EmplaceConstructible であるとみなされるのは、以下が与えられた場合です。

A アロケータ型
m A の lvalue
p コンテナによって準備された T* 型のポインタ
args ゼロ個以上の引数

ここで、X::allocator_typestd::allocator_traits<A>::rebind_alloc<T> と同一であるとします。

以下の式がwell-formedである場合。

std::allocator_traits<A>::construct(m, p, args);

もし X がアロケータを意識しない場合、または std::basic_string の特殊化である場合、この用語は Astd::allocator<T> であるかのように定義されます。ただし、アロケータオブジェクトを作成する必要はなく、std::allocator のユーザー定義特殊化はインスタンス化されません。

[編集] 注意

C++23までstd::basic_stringの要素を構築する際にはカスタムconstructが使用されることが要求されていましたが、すべての実装ではデフォルトのメカニズムしか使用されていませんでした。この要件は、既存の実践に合わせるためにP1072R10によって修正されました。

[編集] 関連項目

CopyInsertable
MoveInsertable
English 日本語 中文(简体) 中文(繁體)