为什么在Visual Studio中没有constexpr版本的std :: isnan

时间:2019-04-05 08:40:37

标签: visual-studio visual-c++ constexpr

我最近在玩static_asserts。

在我的一项“实验”期间,我注意到std::isnan()不是constexpr函数,因此无法在编译时求值。(Visual Studio 2017) 现在的问题是,海湾合作委员会如何解决这个问题,是否有技术原因?

一种解决方案是编写std::isnan()的constexpr版本。

#include <cmath>

constexpr float Value = 5.0f;

// Possible "Fix"
//namespace std
//{
//    constexpr bool isnan(const float& V) noexcept
//    {
//        return V != V; // Dummytest, better would be to check the Bit-Pattern 
//    }
//}

static_assert(!std::isnan(Value), "Check");

int main()
{
}

godbolt.org上进行了测试

x86-msvc v19.16->失败
x86-64 gcc 8.3->构建

0 个答案:

没有答案