Spec-Zone.ru › C++

Именованные требования 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API