此代码给出有关从 double 转换为 int 的警告。
template <class T>
int f(T x)
{
return x;
}
int main()
{
cout << f(3.5);
return 0;
}
但是,当我不使用模板时,如下所示,它可以从 double 转换为 int 并打印 3。
int f(float x)
{
return x;
}
int main()
{
cout << f(3.5);
return 0;
}
虽然它可以编译非模板化示例,但无法编译模板化示例。我想知道为什么编译器在使用模板时不能进行转换。
为什么我使用模板时,编译器不能将函数的返回类型从double类型转换为int类型??
最佳答案
它可以,但它也可能会怀疑您犯了错误。警告就是 - 告诉您可能有问题。
您可以通过添加强制转换告诉编译器转换是有目的的
return static_cast<int>(x);
关于c++ - 当我使用模板时,编译器无法将函数的返回类型从 double 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547546/