对右值不是太理解
std:forword的情况就不说了,只是下面这种况不是太理解
传给flicp3的t2的实参是int,而t2是右值引用函数参数,所以T2推导出来为int& ,这里已经变成左值了再传给f(t2),,但编译就报错了,为什么, g3(T &&i)中T是右值函数,理论上可以接受任何类型参数呀,为什么g3(T &&i )运行就报错
template <typename F, typename T2>
void flip3(F f, T2 &&t2) {
f(t2);
}
template <typename T>
void g3(T &&i) {
cout << i << endl;
}
int main(int argc, char* argv[])
{
int i = 10;
flip3(g3, i);
return 0;
}