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 не инициализируются.

Примечания

Хотя требуется, чтобы настраиваемый 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

Spec-Zone.ru

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