Namespaces
Variants

C++ named requirements: EmplaceConstructible (since C++11)

From cppreference.net
C++ named requirements

指定された型のオブジェクトが、未初期化のストレージにおいて、与えられたアロケータを使用して指定された引数セットから構築可能であることを指定します。

要件

T は、引数 args から EmplaceConstructible である( Container X value_type T と同一である場合)、与えられた

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

where X::allocator_type is identical to 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までは construct のカスタマイズが std::basic_string の要素構築時に要求されていたが、すべての実装はデフォルトのメカニズムのみを使用していた。この要求は既存の実装に合わせて P1072R10 によって修正された。

関連項目

CopyInsertable
MoveInsertable