https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118038
Bug ID: 118038 Summary: constexpr std::bit_cast with long double/float80_t does not work Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gero.peterhoff at gmx dot net Target Milestone: --- int main() { using From = unsigned __int128; // uint128_t using To = long double; // float80_t static_assert(sizeof(To) == sizeof(From), "invalid"); constexpr From //from = From{1} << 62; // work //from = From{1} << 63; // not work //from = From{1} << 64; // not work from = From{1} << 78; // not work //from = From{1} << 79; // work constexpr To t = std::bit_cast<To>(from); std::cout << t << std::endl; } cu Gero