Espacios de nombres
Variantes
Acciones

Requisitos denominados de C++:DefaultInsertable(desde C++11)

De cppreference.com
< cpp‎ | named req
 
 
Requisitos denominados de C++
Números aleatorios
Concurrencia
(C++11)
(C++11)
Rangos
Vista multidimensional
Otros

 

Especifica que una instancia del tipo puede construirse por defecto en el sitio por un asignador de memoria dado.

[editar]Requisitos

El tipo T es DefaultInsertable en el contenedor X cuyo value_type es idéntico a T si, dados

A un tipo asignador de memoria
m un l-valor de tipo A
p un puntero de tipo T* preparado por el contenedor

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);

Si X no reconoce el 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 ningún objeto asignador y no se crean instancias las especializaciones definidas por el usuario de std::allocator.

[editar]Notas

Por defecto, esto inicializa por valor el objeto, como si fuera ::new((void*)p) T()(hasta C++20)std::construct_at(p)(desde C++20). Si no es deseable la inicialización por valor, por ejemplo, si el objeto es de un tipo no clase y no se necesita iniciarlo a cero, se puede evitar proporcionando un Allocator::construct personalizado.

Aunque se requiere que se use una implementación de construct personalizada al construir elementos de std::basic_string hasta C++23, todas las implementaciones solo usaron el mecanismo por defecto. El requisito se corrige mediante P1072R10 para que coincida con la práctica existente.

[editar]Véase también

DefaultConstructible
CopyInsertable
MoveInsertable
EmplaceConstructible
Erasable
close