首页 > 后端开发 > C++ > 正文

为什么 C 对转发引用和右值引用使用相同的语法 (T&&)?

Linda Hamilton
发布: 2024-11-06 06:31:02
原创
722 人浏览过

Why Does C   Use the Same Syntax (T&&) for Forwarding References and Rvalue References?

转发和右值引用共享语法背后的基本原理

原始问题

为什么通用引用与右值引用共享相同的语法(T&&) ?这不是很混乱吗?

答案

通用引用(T&&)可以将 T 推导出为“对象类型”或“引用类型”。当传递右值时,T 推导为 int,从而产生 int&& 参数。当传递左值时,T 推导为 int&,由于引用折叠规则而折叠为 int&。

当 T 无法推导时(例如,在 X::baz 示例中),它不是通用引用。

基本原理

对通用引用和右值引用使用相同的语法可以简化模板参数推导和引用折叠规则。提议的调整允许将模板参数推导为引用类型,从而解决转发问题。

替代语法,例如 T&&&&&、T@ 或 T&42,已被考虑但被拒绝。它们会带来混乱,因为声明符 T&&&@ 无法表示实际类型(它始终引用 int&& 或 int&)。

当前语法与更广泛的类型系统一致:当 T 是左值引用时, T&&也是。规则一致,避免不必要的复杂性。

以上是为什么 C 对转发引用和右值引用使用相同的语法 (T&&)?的详细内容。更多信息请关注PHP中文网其他相关文章!

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