Reinterpret_cast et la création d'objets trivialement constructibles par défaut
cppreference utilisé pour affirmer que reinterpret_cast pourrait être utilisé pour créer des objets trivialement constructibles par défaut sur un stockage convenablement aligné. Cependant, cette affirmation a depuis été corrigée pour indiquer que le placement-nouveau est requis dans de tels cas pour introduire formellement un objet et éviter un comportement indéfini.
Quand commence la durée de vie de l'objet ?
Compte tenu de cette correction, il est clair que aucun objet X n'existe dans le code fourni. Par conséquent, toute tentative d'accès à ses membres (par exemple, reinterpret_cast
Le rôle d'alignas()
Le spécificateur alignas() garantit que le stockage est correctement aligné pour contenir un X. Cela ne crée pas d'objet X. S'il y avait une branche entre la déclaration alignas() et reinterpret_cast, cela ne changerait rien au fait qu'aucun objet X n'existe.
Changements dans les normes C
L'interprétation de ce comportement est restée cohérente entre C 11 et C1z. Le concept de création d'objets sans construction explicite via reinterpret_cast n'est pris en charge dans aucune des deux normes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!