知识卡片

通用引用有条件

普通读书笔记卡 · 1421

内容

书中“通用引用”指能通过推导绑定不同值类别的引用,如函数模板中待推导的 T&&,以及 auto&&。若类型已固定、形态不同或加了 const,通常只是右值引用。判定不能只看两个 &,要核对推导上下文及[[引用折叠规则]]。

参考来源

- 位置:《Effective Modern C++》第5章《右值引用,移动语义,完美转发》,条款二十四:区分通用引用与右值引用(源文件:_epub-src/EPUB/text/ch006.xhtml) - 结论依据:原文限定 T&&/auto&& 的推导上下文,说明通用引用根据实参值类别形成不同引用类型。 - 原始内容:如果一个函数模板形参的类型为 T&& ,并且 T 需要被推导得知,或者如果一个对象被声明为 auto&& ,这个形参或者对象就是一个通用引用。 如果类型声明的形式不是标准的 type&& ,或者如果类型推导没有发生,那么 type&& 代表一个右值引用。 通用引用,如果它被右值初始化,就会对应地成为右值引用;如果它被左值初始化,就会成为左值引用。