右辺値の参照と移動のセマンティクスを理解しようとしています。次のコードでは、Print 関数に 10 を渡すと、予期される右辺値参照のオーバーロードが呼び出されます。しかし、正確には何が起こるのか、その 10 はどこにコピーされるのでしょうか (またはそれが参照された場所から)。第二に、std::move
実際には何をしますか?から値 10 を抽出してi
渡しますか? それとも、右辺値参照を使用するようにコンパイラに指示していますか?
void Print(int& i)
{
cout<<"L Value reference "<<endl;
}
void Print(int&& i)
{
cout<<"R Value reference "<< endl;
}
int main()
{
int i = 10;
Print(i); //OK, understandable
Print(10); //will 10 is not getting copied? So where it will stored
Print(std::move(i)); //what does move exactly do
return 0;
}
ありがとう。