Код: Выделить всё
float storage = 0.0f;
//store a very large int using the underlying bits in a float:
storage = std::bit_cast(2'147'483'647);
//retrieve the int:
int int_val = std::bit_cast(storage);
//whenever you decide that you'd rather store a float than an int,
//you can simply overwrite the variable with whatever float value
//you want (analogous to an untagged / non-discriminated union)
[*]Опирается ли это на неопределенное поведение?[*]Может ли это привести к сбою в определенных системах из-за различий в формате с плавающей запятой, порядке байтов или по другим причинам?
[*]Могут ли определенные битовые комбинации считаться бессмысленными для чисел с плавающей запятой и не могут быть побитовое преобразование или сохранение правильно?
[*]Может ли этот метод быть расширен для совместного использования ячеек памяти для других 4-байтовых или 8-байтовых типов?
[*]Каковы преимущества и недостатки этого метода по сравнению с std::variant или Union?
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-by-using
Мобильная версия