Kompilieren Sie die Zeitmemcpy von Double nach Std :: int64_t
Posted: 05 Mar 2025, 05:49
Ich möchte einen Doppel als std :: int64_t verwenden C ++ 17 zur Kompilierzeit
, da ich C ++ 17 std :: bit_cast nicht verfügbar bin. Eine nicht kompile Zeitlösung, die UB vermeidet, besteht darin, STD :: memcpy :
Dies funktioniert jedoch nicht zum Kompilierzeit, da std :: memcpy kein konstanter Ausdruck ist. Wie kann dies zur Kompilierzeit ohne UB erreicht werden?
, da ich C ++ 17 std :: bit_cast nicht verfügbar bin. Eine nicht kompile Zeitlösung, die UB vermeidet, besteht darin, STD :: memcpy :
Code: Select all
inline std::int64_t toInt(const double a_val) {
std::int64_t val;
std::memcpy(&val, &a_val, 8);
return val;
}