C++ named requirements: EmplaceConstructible (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Указывает, что объект данного типа может быть сконструирован из заданного набора аргументов в неинициализированной памяти с помощью заданного аллокатора.
Требования
Тип
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 |