傳遞右值給一個接收右值的函數,為什麼變成左值了?

Q. 最近在看c++primer的時候,遇到了一個問題,照理來說下例的42是右值,為什麼最後書上說他是傳遞參數t2給g函數的第一個形參左值?
很需要大神們的協助,小妹拜託各位(シ_ )シ m( _)m


以下為代碼:

`template<typename F,typename T1 ,typename T2 >
void flip2(F f,T1 &&t1,T2 &&t2)
{
f(t2,t1);
}
void g (int &&i,int &j)
{
cout<<i<<" "<<j<<endl;
}
flip2(g,i,42);`

阅读 1.9k
1 个回答

42是右值, 但是, 这个函数的用意是参数的转发(forward), 所以传递给 g 的时候参数是 t2, t2是左值.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题