Namespaces
Variants

voidify

From cppreference.net
Memory management library
voidify
( 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)
template < class T >
void * voidify ( T & obj ) noexcept ;
( solo para exposición* )
(constexpr desde C++17)

Devuelve la dirección de obj (convertido implícitamente a void * ).

Contenidos

Parámetros

obj - el objeto cuya dirección será tomada

Valor de retorno

& obj

(hasta C++11)

std:: addressof ( obj )

(desde C++11)

Notas

Esta función solo de exposición es introducida por P0896R4 . Se utiliza para describir los efectos de los algoritmos de memoria no inicializada que construyen objetos en áreas de memoria no inicializadas. El puntero resultante se utiliza como los placement-params de una expresión de placement new .

Inicialmente, el valor de retorno era const_cast < void * > ( static_cast < const volatile void * > ( std:: addressof ( obj ) ) ) , lo cual rompe la const-correctness. Los casts explícitos fueron eliminados mediante la resolución de LWG issue 3870 , y la única conversión restante es la conversión implícita a void * .

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3870 C++98 los casts explícitos rompían la corrección de const se eliminaron estos casts

Véase también

copia un rango de objetos a un área de memoria no inicializada
(plantilla de función)
copia un rango de objetos a un área de memoria no inicializada
(objeto función de algoritmo)
copia un objeto a un área de memoria no inicializada, definida por un rango
(plantilla de función)
copia un objeto a un área de memoria no inicializada, definida por un rango
(objeto función de algoritmo)
mueve un rango de objetos a un área de memoria no inicializada
(plantilla de función)
mueve un rango de objetos a un área de memoria no inicializada
(objeto función de algoritmo)
construye objetos mediante default-initialization en un área de memoria no inicializada, definida por un rango
(plantilla de función)
construye objetos mediante default-initialization en un área de memoria no inicializada, definida por un rango
(objeto función de algoritmo)
construye objetos mediante value-initialization en un área de memoria no inicializada, definida por un rango
(plantilla de función)
construye objetos mediante value-initialization en un área de memoria no inicializada, definida por un rango
(objeto función de algoritmo)
crea un objeto en una dirección dada
(plantilla de función)
crea un objeto en una dirección dada
(objeto función de algoritmo)