Namespaces
Variants

std:: polymorphic

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Definido en el encabezado <memory>
template < class T, class Allocator = std:: allocator < T > >
class polymorphic ;
(1) (desde C++26)
namespace pmr {

template < class T >
using polymorphic =
std :: polymorphic < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (desde C++26)
1) std::polymorphic es un contenedor que contiene un objeto asignado dinámicamente de posiblemente diferentes tipos con semántica de valor.
2) std::pmr::polymorphic es una plantilla de alias que utiliza un polymorphic allocator .

Un objeto std::polymorphic gestiona el tiempo de vida de un objeto poseído. El objeto poseído es de tipo T o cualquier tipo (pública e inequívocamente) derivado de T . Un objeto std::polymorphic solo puede carecer de objeto poseído después de haber sido movido, en cuyo caso se considera sin valor .

Cada objeto de tipo std::polymorphic<T, Allocator> utiliza un objeto de tipo Allocator para asignar y liberar almacenamiento para el objeto poseído según sea necesario.

Si un programa declara una especialización explícita o parcial de std::polymorphic , el comportamiento es indefinido.

Contenidos

Parámetros de plantilla

T - el tipo del objeto poseído
Allocator - el tipo del asignador asociado
Requisitos de tipo
-
T puede ser un tipo incompleto .
-
Si T es uno de los siguientes tipos, el programa está mal formado:
-
Si Allocator no satisface los requisitos de Allocator , el programa está mal formado.
-
Si std:: allocator_traits < Allocator > :: value_type no es del mismo tipo que T , el programa está mal formado.

Tipos anidados

Tipo Definición
value_type T
allocator_type Allocator
pointer typename std:: allocator_traits < Allocator > :: pointer
const_pointer typename std:: allocator_traits < Allocator > :: const_pointer

Miembros de datos

Miembro Descripción
Allocator alloc el asignador asociado
( objeto miembro solo para exposición* )

Funciones miembro

construye el objeto polymorphic
(función miembro pública)
destruye el valor poseído, si existe
(función miembro pública)
asigna contenidos
(función miembro pública)
Observadores
accede al valor poseído
(función miembro pública)
verifica si el polymorphic carece de valor
(función miembro pública)
retorna el asignador asociado
(función miembro pública)
Modificadores
intercambia los contenidos
(función miembro pública)

Funciones no miembro

especializa el algoritmo std::swap
(plantilla de función)

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_polymorphic 202502L (C++26) std::polymorphic

Ejemplo

Véase también

(C++26)
un contenedor que contiene un objeto asignado dinámicamente con semántica de valor
(plantilla de clase)