用三元计算重载函数

Ben*_*ier 5 c++

我有一个重载函数,可以采用两种参数类型:intdouble.当我使用可以返回a int或a 的三元进行评估时double,它总是使用该double版本.这是为什么?

#include<iostream>
using namespace std;

void f(int a)
{
    cout << "int" << endl;
}

void f(double a)
{
    cout << "double" << endl;
}

int main()
{
    string a;
    cin >> a;
    f(a=="int" ? 3 : 3.14159);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ano*_*ous 8

三元运算符始终进行类型提升(单一类型).所以如果一个结果是int而另一个是double,结果是?歌剧院将永远是双倍的.