voidify
|
template
<
class
T
>
void * voidify ( T & obj ) noexcept ; |
(
exposition uniquement*
)
(constexpr depuis C++17) |
|
Renvoie l'adresse de obj (converti implicitement en void * ).
Table des matières |
Paramètres
| obj | - | l'objet dont l'adresse sera prise |
Valeur de retour
|
& obj |
(jusqu'à C++11) |
|
std:: addressof ( obj ) |
(depuis C++11) |
Notes
Cette fonction d'exposition uniquement est introduite par P0896R4 . Elle est utilisée pour décrire les effets des algorithmes de mémoire non initialisée qui construisent des objets dans des zones de mémoire non initialisées. Le pointeur résultat est utilisé comme placement-params d'une expression de placement new .
Initialement, la valeur de retour était const_cast < void * > ( static_cast < const volatile void * > ( std:: addressof ( obj ) ) ) , ce qui rompt la const-correctness. Les casts explicites ont été supprimés par la résolution de LWG issue 3870 , et la seule conversion restante est la conversion implicite en void * .
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3870 | C++98 | les conversions explicites violaient la const-correctness | supprimé ces conversions |
Voir aussi
|
copie une plage d'objets vers une zone de mémoire non initialisée
(modèle de fonction) |
|
|
(C++20)
|
copie une plage d'objets vers une zone de mémoire non initialisée
(objet fonction algorithme) |
|
copie un objet vers une zone de mémoire non initialisée, définie par une plage
(modèle de fonction) |
|
|
(C++20)
|
copie un objet vers une zone de mémoire non initialisée, définie par une plage
(objet fonction algorithme) |
|
(C++17)
|
déplace une plage d'objets vers une zone de mémoire non initialisée
(modèle de fonction) |
|
(C++20)
|
déplace une plage d'objets vers une zone de mémoire non initialisée
(objet fonction algorithme) |
|
(C++17)
|
construit des objets par
initialisation par défaut
dans une zone de mémoire non initialisée, définie par une plage
(modèle de fonction) |
|
construit des objets par
initialisation par défaut
dans une zone de mémoire non initialisée, définie par une plage
(objet fonction algorithme) |
|
|
(C++17)
|
construit des objets par
initialisation par valeur
dans une zone de mémoire non initialisée, définie par une plage
(modèle de fonction) |
|
construit des objets par
initialisation par valeur
dans une zone de mémoire non initialisée, définie par une plage
(objet fonction algorithme) |
|
|
(C++20)
|
crée un objet à une adresse donnée
(modèle de fonction) |
|
(C++20)
|
crée un objet à une adresse donnée
(objet fonction algorithme) |