gpt4 book ai didi

c++ - 智能地抑制误差 max(size_t&, int)

转载 作者:行者123 更新时间:2023-11-30 02:25:43 25 4
gpt4 key购买 nike

我有很多代码调用 max(int, size_t);有没有更聪明的方法来抑制这个错误?

这有点傻,因为它适用于 max(int, 0)

我可以这样做:size_t i = 0;

#include <algorithm>

int main()
{
size_t i = 2;
size_t m = std::max(i, size_t(2));
// size_t m = std::max(i, 2); error: no matching function for call to 'max(size_t&, int)'

}

最佳答案

一般我更喜欢std::max<size_t>(i, 2) ;它具有类似的效果(实际上,它更好一些,因为没有显式强制转换,这可能会消除更多有趣的警告)并避免使参数列表困惑。

另一种方法是编写您自己的 max接受不同类型的参数并返回“正确的”通用类型(类似于用宏完成):

template<typename T, typename U>
auto my_max(T t, U u) -> decltype(1?t:u){
return t>u?t:u;
}

关于c++ - 智能地抑制误差 max(size_t&, int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43884564/

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