LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

И дальше что? Какие дополнительные гарантии это может дать? Ведь даже присваивание из «совместимого типа» может уронить программу.

присваивание не может. может уронить чтение и использование, если тип был ошибочно принят за нужный.

размер типа нужен для размещения переменной, построения массива таких переменных, структур с полями такого типа и так далее.

когда компилятор видит union, он вычисляет размер его типа таким образом, чтобы любой перечисленный тип физически разместился в этом union с учетом выравниваний и все такое.

std::max.

там надо брать размер по максимальному типу, да еще с учетом выравниваний. флаг в руки делать это ручками и системно независимо… когда есть union, именно для этого и предназначенный

Исходная версия alysnix, :

И дальше что? Какие дополнительные гарантии это может дать? Ведь даже присваивание из «совместимого типа» может уронить программу.

присваивание не может. может уронить чтение и использование, если тип был ошибочно принят за нужный.

размер типа нужен для размещения переменной, построения массива таких переменных, структур с полями такого типа и так далее.

когда компилятор видит union, он вычисляет размер его типа таким образом, чтобы любой перечисленный тип физически разместился в этом union с учетом выравниваний и все такое.