Namespaces
Variants

C++ named requirements: EmplaceConstructible (since C++11)

From cppreference.net
C++ named requirements

Especifica que un objeto del tipo puede ser construido a partir de un conjunto dado de argumentos en almacenamiento no inicializado mediante un asignador dado.

Requisitos

El tipo T es EmplaceConstructible en el Container X (cuyo value_type es idéntico a T ) a partir de los argumentos args si, dado

A un tipo de asignador
m un lvalue de tipo A
p el puntero de tipo T* preparado por el contenedor
args cero o más argumentos

donde X::allocator_type es idéntico a std:: allocator_traits < A > :: rebind_alloc < T > ,

la siguiente expresión está bien formada:

std::allocator_traits<A>::construct(m, p, args);

Si X no es consciente del asignador o es una especialización de std::basic_string , el término se define como si A fuera std::allocator<T> , excepto que no es necesario crear un objeto asignador, y las especializaciones definidas por el usuario de std::allocator no se instancian.

Notas

Aunque se requería que se utilizara un construct personalizado al construir elementos de std::basic_string hasta C++23, todas las implementaciones solo utilizaron el mecanismo predeterminado. El requisito se corrigió mediante P1072R10 para coincidir con la práctica existente.

Véase también

CopyInsertable
MoveInsertable