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记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享