我的'auto'返回类型函数的行为异常。有谁知道为什么第二个函数调用返回的是int而不是double?
编译器版本:g ++(Ubuntu 5.4.0-6ubuntu1〜16.04.10)5.4.0 20160609
#include <string>
#include <iostream>
double operator+(const int& a,const std::string& b){
return 3.4;
}
auto f(){
return 3.4;
}
auto sum(auto a, auto b){
return a + b;
}
int main(){
std::cout<< sum(1.0, std::string("hello")) <<std::endl;
std::cout<< sum(1, std::string("hello")) <<std::endl;
std::cout<< f() << std::endl;
}
//3.4
//3
//3.4
答案 0 :(得分:2)
首先,自动功能参数不是标准的C ++。这是一个gcc扩展,可以预期标准委员会的一些工作。有一次,有人在讨论引入概念时允许这种语法。我不知道情况是否如此。
对于奇怪的行为,它似乎只是一个在gcc 5.5.0和gcc 6.1.0之间修复的编译器错误