forwarding reference(转发引用/完美转发引用):C++(自 C++11 起)中的一种特殊形态的函数模板参数类型,典型写法为 T&&(其中 T 为模板参数)。它能够在类型推导时根据实参的左值/右值属性发生“折叠”(reference collapsing),从而在函数内部用 std::forward<T>(arg) 将实参以原本的值类别(lvalue/rvalue)转发出去。
注:它常被称为 universal reference,但更正式、常用的术语是 forwarding reference。
/ˈfɔːrwərdɪŋ ˈrɛfərəns/
A forwarding reference can bind to both lvalues and rvalues.
转发引用既可以绑定左值,也可以绑定右值。
In a template function, T&& is a forwarding reference only when T is deduced, enabling perfect forwarding with std::forward.
在模板函数中,只有当 T 参与类型推导时,T&& 才是转发引用,从而可以用 std::forward 实现完美转发。
forwarding 来自动词 forward(“转交、转发、推进”),表示把参数“原样传递下去”;reference 是“引用”。该术语在 C++11 引入右值引用(rvalue reference)与引用折叠规则后流行起来,用来强调这种引用的核心用途:把实参的值类别“转发”给另一个调用点。
std::forward 与完美转发的条件与陷阱。