C++Uniones


Observaciones

Los sindicatos son herramientas muy útiles, pero vienen con algunas advertencias importantes:

  • Es un comportamiento indefinido, según el estándar de C ++, acceder a un elemento de una unión que no fue el miembro modificado más recientemente. Aunque muchos compiladores de C ++ permiten este acceso de manera bien definida, estas son extensiones y no se pueden garantizar a través de compiladores.

    Una std::variant (desde C ++ 17) es como una unión, solo que le dice lo que contiene actualmente (parte de su estado visible es el tipo de valor que tiene en un momento dado: impone que el acceso al valor ocurra solo a ese tipo).

  • Las implementaciones no necesariamente alinean miembros de diferentes tamaños a la misma dirección.

Uniones Ejemplos relacionados