gpt4 book ai didi

c++ - 为什么 C++ 编译器在对两种不同类型的数字变量使用 `std::max()` 函数时出错

转载 作者:太空狗 更新时间:2023-10-29 19:47:32 25 4
gpt4 key购买 nike

std::max() 函数中使用两种不同的数字变量类型时,C++ 编译器是否会报错? (例如 intlong)。

我的意思是这样的:“有时我们在对两种不同的数字变量类型使用 std::max() 函数时会遇到这个问题,因此编译器会给出错误以防止出现此问题” .

最佳答案

编译器产生错误,因为它无法对 std::max 的模板参数执行类型推导。这就是声明 std::max 模板的方式:两个参数使用相同的类型(模板参数)。如果参数有不同的类型,推导就会变得不明确。

如果您通过显式提供模板参数来解决演绎歧义,您将能够使用不同的类型作为 std::max 参数

std::max(1, 2.0); // Error
std::max<double>(1, 2.0); // OK

@bolov 的回答中描述了 std::max 坚持为其参数使用通用类型(而不是使用两种独立类型)的原因:该函数实际上想要返回一个 引用最大值。

关于c++ - 为什么 C++ 编译器在对两种不同类型的数字变量使用 `std::max()` 函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56725358/

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