Requisitos denominados de C++: Erasable (desde C++11)
Especifica que un objeto del tipo puede destruirse por un Asignador dado.
Requisitos
Dados los siguientes tipos, valores y expresiones:
| Tipo | Definición |
T
|
un tipo objeto |
A
|
un tipo asignador |
X
|
un tipo contenedor se satisface todas las condiciones siguientes:
|
| Valor | Definición |
m
|
un l-valor de tipo A
|
p
|
un puntero de tipo T*
|
Si la expresión std::allocator_traits<A>::destroy(m, p) está bien formada, T es Borrable a partir de X.
Notas
Todos los contenedores de la biblioteca estándar requieren que sus tipos de valores satisfagan a Erasable.
|
Con el asignador por defecto, este requisito es equivalente a la validez de |
(hasta C++20) |
|
Con el asignador por defecto, este requisito es equivalente a la validez de |
(desde C++20) |
Si bien hasta C++23 se requiere que se use una destrucción personalizada al destruir elementos de std::basic_string, todas las implementaciones solo usaban el mecanismo predeterminado. El requisito se corrigió por P1072R10 para coincidir con la práctica existente.
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 |
|---|---|---|---|
| N3346 | C++11 | No había ningún requisito para especificar si un tipo cuyos objetos pueden destruirse mediante asignadores. |
Se añadió requisito. |
Véase también
| InsertablePorCopia | |
| InsertablePorMovimiento | |
| ConstruiblePorEmplazamiento | |
| Destructible |