右值參數左值是什麼時候?左值右參考
例子如下,它應該與std::forward
來解決:在調用發生
void g(int && v1, int & v2)
{
std::cout << v1 << " " << ++v2 << std::endl;
}
template <typename F, typename T1, typename T2>
void flip(F f,T1 && t1, T2 && t2){
g(t2, t1);
}
錯誤是這樣的:
flip(g, j, 2);
我的問題是:在flip(g, j 2)
,第三個參數2
是右值。
在函數flip
中,自變量t2
是對2的正確引用。當調用g
時,看起來t2
是對左值的正確引用。
在參考文獻中收到的參考文獻(未複製?)是什麼時候變成了左值?
這裏是例子:https://ideone.com/cJvFCg
,但「最匹配的類型,包括價值參考' – Hcorg
我知道。但是:在flip(g,j,2)中''第三個參數是''int &&''類型的右值。相比之下,t2是從''int &&&& t2''推導到''int && t2'',這是正確的參考。顯然,它不是右值,雖然它是由一個初始化的。 – tbukic
谷歌爲「C++通用參考」 –