c++ 11记录

2021/7/4 17:51:16

本文主要是介绍c++ 11记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

decltype关键字
decltype可以在编译期推导出一个变量或表达式的结果类型(但不会真正计算表达式的值),并且使用这个结果定义新的变量。

追踪返回类型
先看一个错误的案例:代码想推导出返回值(t + u)类型,为什么编译错误?
答:因为编译器是从左向右读入符号,此时t/u并没有读入,因此不能推导t+u的类型

template<typename R, typename T, typename U>
decltype(t + u) add(T t, U u)
{
return t + u;
}

解决方案:使用auto + decltype,实现 返回类型后置/追踪返回类型
返回类型后置(又称为追踪返回类型)的语法格式
  ①函数指针的等价:如,auto (*fp)() -> int 与int (*fp)()的等价;
  ②函数引用的等价:如,auto (&fr)() -> int 与 int (&fr)()的等价

template<typename R, typename T, typename U>
auto add(T t, U u) -> decltype(t + u) //返回类型后置
{
return t + u;
}
————————————————
版权声明:本文为CSDN博主「粪逗er」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36750623/article/details/84848739



这篇关于c++ 11记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程