You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++仅传递只读参数时 应使用转发引用还是直接用const&?

结论

你当前的场景下直接使用const&就完全够用,不需要使用转发引用,你给出的示例代码可以正常工作。

原因

  • 你所有调用链下游都只做参数的只读访问,不需要修改参数、也不需要转移参数的所有权。而const左值引用可以绑定任意值类别的对象,不管传入的是左值、const左值还是临时右值,都可以正常绑定,不会触发额外的对象拷贝,性能上没有损失。
  • 你代码中的std::is_same<char, Arg>::value类型判断逻辑也可以正常运行:模板参数Arg在const Arg&的推导规则下,会被推导为去掉顶层const的原始类型,刚好适配你做类型分支的需求,除非你有精确匹配参数cv限定符、值类别的特殊要求,否则不需要调整。

只有满足以下任一需求时,才需要替换为转发引用

  • 下游函数存在区分左值/右值的重载(比如有接收右值引用用来移动资源的重载),需要保留原始参数的值类别传递给下游
  • 下游逻辑需要修改传入的参数,或者需要接收非const的左值引用
  • 你需要精确识别原始参数的cv限定符、值类别做逻辑分支

内容的提问来源于stack exchange,提问作者Voko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:36:04