首页/新闻资讯/正文详情

C++ auto、decltype 与 decltype(auto):类型推导和引用保留一篇搞懂

发布时间:2026/9/27 13:14:53 来源:云帆数科 栏目:资讯中心
C++ auto、decltype 与 decltype(auto):类型推导和引用保留一篇搞懂
C auto、decltype 与 decltype(auto)类型推导和引用保留一篇搞懂auto 能让声明更简洁却不是“原样复制表达式类型”。在常见的按值声明中它会去掉顶层 const 与引用decltype 则遵循另一套规则。理解这三者能避免不小心复制对象或返回悬空引用。1. auto按值、按引用分别写#includetype_traitsintmain(){constintvalue42;constintrefvalue;autoaref;// int独立副本autobref;// const int引用原对象constautocref;// const int只读引用static_assert(std::is_same_vdecltype(a),int);static_assert(std::is_same_vdecltype(b),constint);}auto 不等于“永远丢掉 const”这里是按值声明 a所以顶层 const 与引用被去掉显式加 后引用与被引用对象的 const 约束仍在。大型对象循环遍历时这个差别很重要。2. decltype括号也会改变结果#includetype_traitsintmain(){intvalue1;static_assert(std::is_same_vdecltype(value),int);static_assert(std::is_same_vdecltype((value)),int);}未加额外括号的变量名decltype 取它声明的类型(value) 是左值表达式所以得到 int。这不是编译器怪脾气而是 decltype 对未加括号的名字与一般表达式采用不同规则。需要精确类型时一定留意表达式形式。3. decltype(auto)让返回类型跟着表达式走#includevectorstd::vectorintnumbers{10,20};decltype(auto)first(){return(numbers[0]);// int}intmain(){first()99;// 修改 numbers[0]}如果把 first 的返回类型写成 auto返回的是 int 副本不能像上面那样修改原元素。decltype(auto) 常用于通用包装器但要求你真正理解返回值的生命周期。错误示例是返回局部变量的引用decltype(auto)broken(){intlocal1;return(local);// 推导为 int函数结束后悬空切勿这样写}4. 速查写法主要特点auto x expr通常按值可能复制auto x expr引用左值保留底层 constconst auto x expr只读引用可绑定临时值decltype(expr)按 decltype 规则取得类型decltype(auto)声明或返回时保留 decltype 规则结果日常变量先用 auto涉及引用就明确写出 写泛型包装、需要原样返回引用时再考虑 decltype(auto)并把生命周期检查放在第一位。

相关推荐

OpenClaw agent-browser 技能实战:从入门到排坑指南(TaoToken 配置版)
OpenClaw agent-browser 技能实战:从入门到排坑指南(TaoToken 配置版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 13:14:53

重庆网站建设公司那家好一文搞懂避坑指南
重庆网站建设公司那家好一文搞懂避坑指南

重庆网站建设公司那家好一文搞懂避坑指南 找重庆建站公司,最怕的就是被坑高价还烂尾。 别信那些“全网最低”的广告,那都是诱饵。 今天咱们不吹牛,直接拆解怎么避开陷阱,一文搞懂真相。 概念速懂:别被“全能”忽悠… · 2026/9/27 13:14:53

一句话配置,让你的 OpenClaw 变身“全栈 AI 投顾”|TaoToken 统一 Key 接入实战
一句话配置,让你的 OpenClaw 变身“全栈 AI 投顾”|TaoToken 统一 Key 接入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 13:14:53

为什么我建议你还是自己写 OpenClaw 的 Skills?手把手教你打造专属自动化文献阅读工作流
为什么我建议你还是自己写 OpenClaw 的 Skills?手把手教你打造专属自动化文献阅读工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 17:32:35

3招搞定手机建立网站app最佳实践
3招搞定手机建立网站app最佳实践

3招搞定手机建立网站app最佳实践 不会写代码,但想在手机上建个站?别慌。很多甲方拿着手机找上门,问能不能直接在APP里把官网搞定。这需求看似简单,实则坑多。我干了十年建站,见过太多人花大钱买了个“半成品”,最后卡在备案、SEO和安全上,钱… · 2026/9/27 17:32:23

React(5)—— 用 create-react-app 脚手架 + VSCode 配 TaoToken:settings.json 骨架与 JSX 验证
React(5)—— 用 create-react-app 脚手架 + VSCode 配 TaoToken:settings.json 骨架与 JSX 验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 17:32:17

大模型上下文成本与注意力优化技术深度解析——为何O(n²)平方复杂度无法被常规优化消除
大模型上下文成本与注意力优化技术深度解析——为何O(n²)平方复杂度无法被常规优化消除

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 17:32:05

Microsoft Agent Framework 集成 MCP:基于 STDIO 的工具接入与 TaoToken 统一 Key 配置
Microsoft Agent Framework 集成 MCP:基于 STDIO 的工具接入与 TaoToken 统一 Key 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 17:31:46

5个wordpress客户案例揭秘:避开建站报价陷阱,省下一半冤枉钱
5个wordpress客户案例揭秘:避开建站报价陷阱,省下一半冤枉钱

5个wordpress客户案例揭秘:避开建站报价陷阱,省下一半冤枉钱 找建站公司,最怕的就是被忽悠。报价单上写着“标准版”,实际交付时却全是隐藏收费,或者功能根本跑不起来,最后还得加钱修补。这种 建站报价… · 2026/9/27 17:31:46

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码