Espacios de nombres
Variantes
Acciones

Requisitos denominados de C++:CopyInsertable(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 un objeto del tipo puede construirse por copia en el sitio por un asignador de memoria dado.

[editar]Requisitos

Dados los siguientes tipos, valores y expresiones:

Tipo Definición
T un tipo objeto
A un tipo asignador de memoria
X un tipo contenedor que satisface todas las siguientes condiciones:
  • X::value_type es lo mismo que T.
  • X::allocator_type es lo mismo que std::allocator_traits<A>::rebind_alloc<T>.
Valor Definición
m un l-valor de tipo A
p un puntero de tipo T*
Expresión Definición
v una expresión que denota un l-valor de tipo T / const T, o un r-valor de tipo const T
exprstd::allocator_traits<A>::construct(m, p, v)

T es CopyInsertable en X si se satisfacen todas las condiciones siguientes:

  • T es MoveInsertable e X.
  • expr está bien formado.
  • La evaluación de expr no cambia el valor de v.
  • Inmediatamente después de la evaluación de expr, el valor de v es equivalente a *p.


[editar]Notas

Si A es std::allocator<T>, entonces esto llamará a new de ubicación, como si fuera por ::new((void*)p) T(v)(hasta C++20)std::construct_at(p, v)(desde C++20).

Si bien hasta C++23 se requería que se utilizara una implementación de construct personalizada al construir elementos de std::basic_string, todas las implementaciones solo usaban el mecanismo por defecto. El requisito se corrige mediante P1072R10 para que coincida con la práctica existente.

[editar]Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 2177 C++11 la evaluación de expr no tenía ninguna condición posterior añadida
LWG 3957 C++11 v podía denotar un r-valor de tipo T excluido
close