Namespaces
Variants

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

From cppreference.net
C++ named requirements

Указывает, что объект данного типа может быть сконструирован из заданного набора аргументов в неинициализированной памяти с помощью заданного аллокатора.

Требования

Тип T является EmplaceConstructible в Container X (чей value_type идентичен T ) из аргументов args если, при условии

A тип аллокатора
m lvalue типа 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 требовалось использовать пользовательский construct при конструировании элементов std::basic_string , все реализации использовали только механизм по умолчанию. Требование исправлено документом P1072R10 для соответствия существующей практике.

Смотрите также

CopyInsertable
MoveInsertable