gpt4 book ai didi

c++ - 对整数类型重载 std::isnan 和 std::isinf

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:08 24 4
gpt4 key购买 nike

Cppreference 提到了 std::isnan 的重载和 std::isinf (可能还有其他)整数类型。这使得以下调用明确:

std::isnan(1);

但是,我找不到 C++ 标准中提到的任何此类重载。我检查了 C++11 和 current draft ,并且只有 floatdoublelong double 的重载。

至于编译器行为,GCCClang都编译代码,但是 MSVC does not .谁是对的? cppreference 上的积分重载从何而来?

最佳答案

cmath 的标准页面末尾有一段:

For each set of overloaded functions within <cmath>, with the exception of abs, there shall be additional overloads sufficient to ensure:

2. Otherwise, if any argument of arithmetic type corresponding to a double parameter has type double or an integer type, then all arguments of arithmetic type corresponding to double parameters are effectively cast to double.

整数重载是强制性的,否则您会在三个浮点重载之间得到模棱两可的调用,但未指定如何实现此类重载。


请注意 <cmath> 中的其他函数header 对整数类型有正确的重载,例如,

std::atan(1)

调用模板版本double atan<int,void>(int) .

关于c++ - 对整数类型重载 std::isnan 和 std::isinf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56357527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com