首页 > 后端开发 > C++ > C 中的通用引用和转发引用有什么区别?

C 中的通用引用和转发引用有什么区别?

DDD
发布: 2024-11-12 13:08:02
原创
694 人浏览过

What's the Difference Between Universal and Forwarding References in C  ?

揭秘通用引用和转发引用

在 C 语言中,通用引用和转发引用之间的区别一直是一个争论的话题。为了澄清这种混乱,我们探讨它们的关系和定义。

通用引用的本质

历史上,通用引用被引入来描述可以接受右值引用的模板参数到 cv 不合格类型。这允许模板根据传递的参数推断出值或左值引用。

定义的转发引用

术语“转发引用”是在C 标准 (N4164) 解决了 C 11 中此概念缺乏特定术语的问题。转发引用正式定义为对 cv 不合格模板参数的右值引用。如果参数是左值,则在类型推导过程中,“对 A 的左值引用”将替换为类型“A”。

通用性和转发:同币不同面

术语“通用参考”和“转发参考”描述相同的概念。它们都引用对 cv 不合格模板参数的右值引用,从而可以推导值或左值引用。当前的 C 标准术语是“转发引用”,它被认为是更准确和简洁的描述符。

std::forward 的无关性

至关重要请注意,在函数体内使用 std::forward 与转发引用的概念无关。转发引用仅指基于对 cv 不合格参数的右值引用推导模板类型。它们的行为与随后是否调用 std::forward 无关。

以上是C 中的通用引用和转发引用有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板