为什么模板函数在C++中给出错误

为什么模板函数在C++中给出错误,c++,templates,C++,Templates,我有模板功能 template<typename A,typename B,typename C> C fun(A a,B b) { return (string)(a+b); } 我的主要任务是 int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); auto c= fun(10,20.3); cout<<c; return a.exec(); }

我有模板功能

template<typename A,typename B,typename C>
C fun(A a,B b)
{
    return (string)(a+b);
}
我的主要任务是

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    auto c= fun(10,20.3);
    cout<<c;
    return a.exec();
}
如果我执行这个,它会说 在函数int mainit中,char**

错误:调用funit时没有匹配函数,双精度


请让我知道为什么我不能这样做,或者这是错误的

总之,您需要一个

首先,不能简单地将对象投给C++中的STD::string,C++中的转换遵循一些我们无法充分解释的原则。更糟糕的基本类型。对于数字类型,有一个函数用于该类型

第二,有一种称为的方法,它可以从用于实例化函数模板或类templateC++17的参数自动推断模板参数。在中,C funA a,B B-其中a,B和C都是模板类型。根本没有办法用进一步的魔法来推导C。或者您可以使用占位符返回类型自动


获得,你应该得到

你认为如何从你对乐趣的呼唤中推断出C?删除C,使用autoGood了解该网站让你看到谁下载谢谢!所以不用担心,只要从上面的链接中选择一个好的C++材料。你会很感激的至于自动占位符返回类型,它在C++11编译器中适用于某些有限的情况,在C++14编译器中适用于更广泛的情况。同样,如果您不知道这些C++11和C++14编译器和/或如何在最新版本的编译器上启用它们,请参阅资料和/或编译器文档,