c++14在模板的返回类型上的改进

在祁宇的<深入应用c++11>书中,第一章介绍了auto,decltype和返回类型后置的语法.不过,其返回类型后置的介绍早就过时了.

c++11中的返回类型后置用于模板类的返回类型推导,并解释为在编译时,不能对默认的前置返回类型进行估计.典型示例代码如下:

#include <iostream>
using namespace std;
template <class T1,class T2>
auto add(T1 t1, T2 t2)->decltype(t1+t2)
{
	return t1+t2;
}
int main()
{
	auto t1=2.5;
	auto t2=3;
	auto rst=add(t1,t2);
	cout<<rst<<endl;
	return 0;
}

其中add函数的返回类型就进行了后置,用decltype进行了推导.

这个操作仅仅是一个过渡的方法,c++14能完美的解决这个问题.代码如下

template <class T1,class T2>
auto add(T1 t1, T2 t2)
{
	return t1+t2;
}

去掉返回类型后置一样可以编译通过并得到正确的计算结果.

猜你喜欢

转载自blog.csdn.net/dong_beijing/article/details/81546041