为什么这个函数重载在C ++中失败了?

时间:2015-08-11 07:00:53

标签: c++ overloading

get(key[, default])

编译错误:

  

test.cpp:在函数'int main()'中:test.cpp:15:19:错误:调用   重载'min(int&,long long int&)'是不明确的        COUT<

但是为什么不会自动推断出#include <iostream> int min(int a, int b){ return a < b ? a : b; } long long min(long long a, long long b){ return a < b ? a : b; } int main(){ int a = 1; long long b = 2; std::cout<<min(a, b); return 0; }

自动投射long long min(long long a, long long b)int a会不会让它变得更糟?

long long a

这个可以在不编译错误的情况下工作。

#include <iostream>

long long min(long long a, long long b){
    return a < b ? a : b;
}

int main(){
    int a = 1;
    long long b = 2;
    std::cout<<min(a, b);
    return 0;
}
  

在/usr/include/c++/4.8/algorithm:62:0中包含的文件中,                    来自test.cpp:2:/usr/include/c++/4.8/bits/stl_algo.h:4226:5:注意:模板_Tp std :: min(std :: initializer_list&lt; _Tp&gt;,_Compare)        min(initializer_list&lt; _Tp&gt; __l,_Compare __comp)        ^ /usr/include/c++/4.8/bits/stl_algo.h:4226:5:注意:模板参数扣除/替换失败:test.cpp:8:29:注意:
  不匹配的类型'std :: initializer_list&lt; _Tp&gt;'和'int'        的std :: COUT&LT;

0 个答案:

没有答案