#include <iostream>
using namespace std;
// 接收左值的函数 f()
template<typename T>
void f(T &)
{
cout << "f(T &)" << endl;
}
// 接收右值的函数f()
template<typename T>
void f(T &&)
{
cout << "f(T &&)" << endl;
}
// 万能引用,转发接收到的参数 param
template<typename T>
void PrintType(T&& param)
{
f(std::forward<T>(param)); // 将参数param转发给函数 void f()
}
int main(int argc, char *argv[])
{
int a = 0;
int &b = a;
PrintType(a);//传入左值
PrintType(0);//传入右值
PrintType(b);//传入左值
}
备份地址: 【std::forward demo】