Не раньше, чем C ++ 20.Все обычные приемы являются либо полностью запрещенными (reinterpret_cast
), либо неопределенным поведением, и UB становится плохо сформированным при выполнении во время компиляции.
C ++ 20 обеспечивает std::bit_cast
, что делает двоичное преобразованиемежду двумя типами, при условии, что они оба легко копируются и имеют одинаковый размер.И функция constexpr
, так что вы можете использовать ее во время компиляции.