gpt4 book ai didi

c++ - 为什么 C++ 中没有针对整数的 std::copysign 专门化?

转载 作者:行者123 更新时间:2023-12-02 15:53:02 25 4
gpt4 key购买 nike

我尝试使用std::copysign设置int带有另一个标志。

int translate = getTranslate();
int offset = getOffset();
translate = std::copysign(offset, translate)

但是copysign<int, int>返回 double 。我应该如何更好地使用它?或者我应该用什么来代替?

最佳答案

起初我对 std::copysign 有点困惑实际上很好,但是 note on cppreference给出合理的动机:

std::copysign is the only portable way to manipulate the sign of a NaN value (to examine the sign of a NaN, signbit may also be used)

考虑到这一点以及 integers cannot be NaN 这是有道理的,没有 std::copysign对于 int 。另一方面,std::copysign<int,int>返回 int在通用代码中会派上用场,您希望它适用于 double以及 int 。为此,我也许会编写自己的包装器,从

template <typename T> 
T my_copy_sign(const T& t, const T& s);

然后相应地对其进行专门化。

PS:如果您只在 int 上工作,您可能不需要std::copysign首先。

关于c++ - 为什么 C++ 中没有针对整数的 std::copysign 专门化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58483029/

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