c ++模板中的隐式类型转换

map*_*ple 2 c++ templates

我有一个功能模板:

template<typename T>
void fun(T a, T b){
         .......
}

int a = 0;
double b = 1.2;
f(a, b);
Run Code Online (Sandbox Code Playgroud)

可以自动转换为双倍?

son*_*yao 7

可以自动转换为双倍?

不,因为它的暧昧之间fun<int>fun<double>,推断的类型时,T模板参数推导.

您可以显式指定模板参数,以a隐式转换为double:

int a = 0;
double b = 1.2;
fun<double>(a, b); 
Run Code Online (Sandbox Code Playgroud)

或添加显式转换,以使模板参数推断明确:

int a = 0;
double b = 1.2;
fun(static_cast<double>(a), b); 
Run Code Online (Sandbox Code Playgroud)