Именованные требования C++: EmplaceConstructible (начиная с C++11)
Указывает, что объект типа может быть сконструирован из заданного набора аргументов в неинициализированном хранилище заданным аллокатором.
Требования
Тип T является EmplaceConstructible в контейнер 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 при создании элементов std::basic_string требуется использовать настроенный construct, во всех реализациях использовался только механизм по умолчанию. Требование было исправлено в P1072R10, чтобы соответствовать сложившейся практике.
См. также
| CopyInsertable | |
| MoveInsertable |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/EmplaceConstructible