揭秘通用引用和转发引用
在 C 语言中,通用引用和转发引用之间的区别一直是一个争论的话题。为了澄清这种混乱,我们探讨它们的关系和定义。
通用引用的本质
历史上,通用引用被引入来描述可以接受右值引用的模板参数到 cv 不合格类型。这允许模板根据传递的参数推断出值或左值引用。
定义的转发引用
术语“转发引用”是在C 标准 (N4164) 解决了 C 11 中此概念缺乏特定术语的问题。转发引用正式定义为对 cv 不合格模板参数的右值引用。如果参数是左值,则在类型推导过程中,“对 A 的左值引用”将替换为类型“A”。
通用性和转发:同币不同面
术语“通用参考”和“转发参考”描述相同的概念。它们都引用对 cv 不合格模板参数的右值引用,从而可以推导值或左值引用。当前的 C 标准术语是“转发引用”,它被认为是更准确和简洁的描述符。
std::forward 的无关性
至关重要请注意,在函数体内使用 std::forward 与转发引用的概念无关。转发引用仅指基于对 cv 不合格参数的右值引用推导模板类型。它们的行为与随后是否调用 std::forward 无关。
以上是C 中的通用引用和转发引用有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!