求解c++函数模板问题
画圈的地方我不知道它为啥会报错,能帮忙看看它为啥会错吗?求给解释解释!!! template<typename T1, typename T2> auto f(T1 a, T2 b) -> decltype(a+b){
return a+b;
}
C++14里可以这样写:
template<typename T1, typename T2> auto f(T1 a, T2 b)
{
return a+b;
}
为何函数模板使用了返回值类型推导没出错,同时模板具体化时也使用返回值类型推导就出错了!! 我知道可以你那样写,但是就是不知道为啥我那样写会出错。 都城 发表于 2015-11-19 14:23
为何函数模板使用了返回值类型推导没出错,同时模板具体化时也使用返回值类型推导就出错了!! ...
函数模板不管代码对错编译器是不检查的. 只有具体化的时候才检查 0x01810 发表于 2015-11-19 15:19
函数模板不管代码对错编译器是不检查的. 只有具体化的时候才检查
函数模板和模板具体化同时使用返回值类型推导报错,不同时就报错,怎么回事呢? 不同时不报错 刚上面打错了 本帖最后由 0x01810 于 2015-11-20 16:18 编辑
模板具体化本来就是针对模板的. 函数模板就是模板.
你这样写:
template<> auto f(int a, double b) -> decltype(a+b)
{
return a+b;
}
int main()
{
cout<<(f(12, 20.12))<<endl;
return 0;
}
error: no function template matches function template specialization 'f'.
是想表达什么?这种写法有问题吧. 函数模板只不过多了个显式推导参数类型.
页:
[1]