为什么通用引用与右值引用共享相同的语法(T&&) ?这不是很混乱吗?
通用引用(T&&)可以将 T 推导出为“对象类型”或“引用类型”。当传递右值时,T 推导为 int,从而产生 int&& 参数。当传递左值时,T 推导为 int&,由于引用折叠规则而折叠为 int&。
当 T 无法推导时(例如,在 X::baz 示例中),它不是通用引用。
对通用引用和右值引用使用相同的语法可以简化模板参数推导和引用折叠规则。提议的调整允许将模板参数推导为引用类型,从而解决转发问题。
替代语法,例如 T&&&&&、T@ 或 T&42,已被考虑但被拒绝。它们会带来混乱,因为声明符 T&&&@ 无法表示实际类型(它始终引用 int&& 或 int&)。
当前语法与更广泛的类型系统一致:当 T 是左值引用时, T&&也是。规则一致,避免不必要的复杂性。
以上是为什么 C 对转发引用和右值引用使用相同的语法 (T&&)?的详细内容。更多信息请关注PHP中文网其他相关文章!