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