C++ 完美转发(泛型模板函数)
完美转发是指在泛型模板函数中,以参数的原始形式(左值或右值)传递给目标函数,从而避免不必要的拷贝或移动操作。
不使用完美转发,本质上是右值在传递中,默认变成左值,触发深拷贝。
#include <iostream>
#include <utility> // 必须包含此头文件以使用std::forwardusing namespace std;// 处理左值引用
void process(int& x) {cout << "Lvalue reference: " << x << endl;
}// 处理右值引用
void process(int&& x) {cout << "Rvalue reference: " << x << endl;
}// 泛型函数,使用完美转发
template <typename T>
void forwardExample(T&& arg) {process(std::forward<T>(arg)); // 保持原始值类别// process(arg); // 不使用完美转发
}int main() {int a = 10;forwardExample(a); // 传递左值forwardExample(20); // 传递右值return 0;
}