完美转发(Perfect Forwarding)的实现原理
解释C++11中的完美转发机制,包括std::forward的工作原理、引用折叠(Reference Collapsing)规则,以及为什么需要T&&这样的转发引用(Forwarding Reference)。
回答
我还是少年
完美转发指在函数模板中将参数以原始类别(左值/右值)传递给另一个函数。核心依赖引用折叠规则:当模板参数T被推导为X&时,T&&折叠为X&;当T为X&&时,T&&保持为X&&。std::forward<T>(arg)条件转换:若T为左值引用则返回左值引用,否则返回右值引用。auto&&也适用折叠规则用于range-for。完美转发典型场景:工厂函数、包装器、代理函数需要保留参数的值类别。C++20中std::forward可在consteval上下文中使用。注意:转发引用必须是T&&形式,不能是const T&&或vector<T>&&。