特性2:返回类型后置
#《C++11新特兴—C++标准库的更新》
##特性2:返回类型后置
1、使用场景
主要用于一些可能需要通过参数的运算来得到返回值的类型。例如如下场景: auto z1 = add<decltype(x + y), int, double>(x, y);
中如果在使用时要传入返回值类型就必须知道函数中做了哪些操作,这样才能知道返回值的类型,但往往在调用时并不知道里面做什么操作!
1 |
|
因此对于上述的问题解决方案就是通过自动类型推导,但不能使用auto
因为其只能根据值进行推导,所以采用decltype
,但是decltype
放在返回值位置也不能推导(因此此时参数还没被定义),所以将其放在函数参数后面,称为类型后缀,此外返回值位置还需要一个关键字因此**放置auto
**。
==C++11中增加了后置类型后置语法,其实就是将decltype
和auto
结合起来完成的返回类型的推导。==
2、使用方法
1 | auto func(参数1,参数2,...)->decltype(参数表达式) |
此时auto
会追踪decltype()
推导出来的类型。
一个很好的案例:
1 |
输出结果:
1 | // 输出结果z: 520z1: 113.14 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ò.ó!
评论