voidify
|
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) |
|
|
(C++20)
|
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) |
|
|
(C++20)
|
copia un objeto a un área de memoria no inicializada, definida por un rango
(objeto función de algoritmo) |
|
(C++17)
|
mueve un rango de objetos a un área de memoria no inicializada
(plantilla de función) |
|
(C++20)
|
mueve un rango de objetos a un área de memoria no inicializada
(objeto función de algoritmo) |
|
(C++17)
|
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) |
|
|
(C++17)
|
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) |
|
|
(C++20)
|
crea un objeto en una dirección dada
(plantilla de función) |
|
(C++20)
|
crea un objeto en una dirección dada
(objeto función de algoritmo) |