0kc*_*ats 1 c++ constexpr c++11
是否有构造constexpr函数的标准方法,该函数允许将double转换为其64位表示形式:
constexpr uint64_t double_to_uint64_t(double d) {
??????
}
Run Code Online (Sandbox Code Playgroud)
以便
constexpr uint64_t two_bits = double_to_uint64_t(2.0);
Run Code Online (Sandbox Code Playgroud)
会编译吗?
反向方法(uint64变为double)也很有趣。
直到C ++ 20。所有通常的技巧都是完全禁止的(reinterpret_cast)或未定义的行为,并且在编译时执行UB时格式不正确。
C ++ 20提供了std::bit_cast,可以在两种类型之间进行二进制转换,只要它们都是可复制的并且具有相同的大小即可。函数是constexpr,因此您可以在编译时使用它。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |