Ali*_*Ali 3 c++ compiler-errors max
在std::max()函数中使用两种不同的数字变量类型时,c ++编译器是否有任何原因导致错误?(例如int和long)。
我的意思是这样的:“有时在将std::max()函数用于两种不同的数字变量类型时会遇到此问题,因此编译器会给出错误以防止出现此问题”。
编译器产生错误,因为它无法对的模板参数执行类型推导std::max。这就是std::max声明模板的方式:两个参数使用相同的类型(模板参数)。如果参数具有不同的类型,则推论变得模棱两可。
如果您通过显式提供模板参数来解决推导模糊性,则可以使用其他类型作为std::max参数
std::max(1, 2.0); // Error
std::max<double>(1, 2.0); // OK
Run Code Online (Sandbox Code Playgroud)
std::max@bolov的答案描述了为什么坚持为其参数使用公共类型(而不是使用两个独立的类型)的原因:该函数实际上要返回对最大值的引用。
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |