后置返回类型

C++11 新特性

当需要返回值时,我们没法判断 函数模版 需要返回什么类型

1
2
3
4
5
6
7
template<typename T1, typename T2>
?type? gt(T1 x, T2 y)
{
...
return x + y;
...
}
decltype

不能直接解决这种情况,所以 C++11 提出了后置返回类型

1
2
3
double h(int x, float y);

auto h(int x, float y) -> double;

将返回类型移到参数声明后面,->double 被称为后置返回类型

1
2
3
4
5
6
7
template<typename T1, typename T2>
auto gt(T1 x, T2 y) -> decltype(x + y)
{
...
return x + y;
...
}

使用后置返回类型就解决了该问题

函数返回数组

1
auto func(int i) -> int(*)[10];