在 C++11 之前,泛型函数在传递参数时无法保证参数的原始类型(左值或右值)导致额外的拷贝或移动操作,完美转发是一种高效传递技术,能够保持参数的原始特性,避免额外的性能开销
完美转发是指在泛型编程中以参数的原始形式传递给目标函数,从而避免不必要的拷贝或移动操作
模板 + 右值引用 = 万能引用(只在参数中适用)
#include<iostream>
using namespace std;
void func(int& x) { cout << "L_value " << x << endl; }
void func(int&& x) { cout << "R_value " << x << endl; }
template<typename T>
void forwardExample(T&& arg)
{
func(forward<T>(arg));
}
int main()
{
int a = 10;
forwardExample(a);
forwardExample(20);
return 0;
}