#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