Namespaces
Variants

std:: indirect

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 indirect ;
(1) (desde C++26)
namespace pmr {

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

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

Un objeto std::indirect gestiona el tiempo de vida de un objeto poseído. Un objeto std::indirect 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::indirect<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::indirect , 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
pointer p un puntero al valor poseído
( objeto miembro solo para exposición* )
Allocator alloc el asignador asociado
( objeto miembro solo para exposición* )

Funciones miembro

construye el objeto indirect
(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 indirect 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

(C++26) (C++26)
compara objetos indirect
(plantilla de función)
especializa el algoritmo std::swap
(plantilla de función)

Clases auxiliares

Soporte de hash para std::indirect
(especialización de plantilla de clase)

Guías de deducción

Notas

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

Ejemplo

Véase también

un contenedor polimórfico que contiene un objeto asignado dinámicamente con semántica de valor
(plantilla de clase)
(C++11)
puntero inteligente con semántica de propiedad única de objetos
(plantilla de clase)