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

询问:将函数返回值绑定到const引用是否仍属于C++未定义行为?

问题解答

这种写法完全合法,不属于C++未定义行为。

C++标准明确规定:当一个临时对象被绑定到const左值引用(或者右值引用)时,该临时对象的生命周期会被延长,与引用的生命周期保持一致。

在你的代码场景里:

  • vecExplode返回的是std::vector<std::string>类型的临时对象
  • 这个临时对象被绑定到const std::vector<std::string>& args上
  • 临时对象的生命周期会被延长至args所在的作用域结束(也就是func函数执行完毕时)

因此在func函数中访问args是完全安全的,不存在未定义行为。

需要补充的是:如果尝试将临时对象绑定到非const左值引用,那才是不符合标准的写法,但你的代码使用const引用,完全符合规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:32:03