在constexpr变量模板中模拟nan/inf
Simulating nan/inf in a constexpr variable template
有没有一种方法可以在常量表达式中模拟nan/inf!使用C宏HUGE_VAL和INFINITY或任何其他!另外,即使有了它们,它仍然不是constexpr。
我不希望使用C++标准库或C标准库提供的任何标准函数。
当然,以下内容不会编译。编译器说constexpr变量必须用常量表达式初始化。。。
template<typename T = double>
constexpr T NaN = T(0.0 / 0.0);
MSVC编译器使用的方法也不编译:
template<typename T = double>
constexpr T NaN = T(1e+300); //with some changes, apparently having the float overflow
我知道这有点宽泛,但这是一个图书馆,我正在寻找一些有教育意义的建议!谢谢
__builtin_nan("0")
我使用编译器资源管理器检查了这一点,它似乎在gcc 6.1+、clang 6.0.0+、MSVC v19.24+和许多其他不常见的编译器中都得到了支持。
使用编译器提供的内容。这是唯一不标准的方式。检查编译器是否以及如何提供此功能。还要记住,标准库提供std::numeric_limits<T>::has_quiet_NaN
是有原因的。
相关文章:
- 如何使用Google Mock来模拟gettimeofday()
- G锁定铸造到基础上会释放模拟行为
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 落砂模拟碰撞检测C++和SFML
- g++的分段错误(在NaN上使用to_string两次时)
- 输出是NaN,如何
- 在gtest.中使用fff.h模拟系统API
- 谷歌模拟和覆盖关键字
- 用C#中的并集模拟C++嵌套结构
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 为什么我在输出端得到 nan?
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 提升反序列化对象具有 nan 或 -nan 值
- Is !NaN not a NaN?
- NaN 上的宇宙飞船操作员
- 如何模拟不同边数的骰子滚动?
- C++ STL 排序会检查 NaN 吗?
- C++ 每次运行程序时我都会"nan"输出的问题
- 在constexpr变量模板中模拟nan/inf