Una reciente aclaración en el estándar C++26, relacionada con el acceso a uniones, evita un posible comportamiento indefinido (UB). El problema surgió en un ejemplo del nuevo std::is_within_lifetime, que inicialmente parecía generar UB al acceder a un miembro inactivo de una unión (c) cuando el miembro activo era b. Sin embargo, la especificación del estándar C++ permite esta práctica bajo una excepción específica: permite acceder a la representación de cualquier objeto a través de un char, unsigned char o std::byte, independientemente del tipo del miembro activo. Esta excepción se basa en las raíces de C++ y la capacidad de los punteros char* para apuntar a cualquier dirección de memoria. Es crucial entender que, aunque acceder a un miembro inactivo de una unión normalmente sería UB, esta excepción permite la inspección de la representación de bytes, pero no la interpretación del valor. Este detalle, aunque sutil, es fundamental para asegurar la corrección del código según las reglas del lenguaje.
