Я пытаюсь понять ссылку rvalue и перенести семантику. В следующем коде, когда я передаю 10 в функцию Print, он вызывает переназначение ссылочной стоимости rvalue, что ожидается. Но что именно происходит, где будет скопировано 10 (или откуда оно указано). Во-вторых, что делает std::move
на самом деле? Извлекает ли значение 10 из i
, а затем передает его? Или это инструкция для компилятора использовать ссылку rvalue?Что именно происходит, когда мы используем ссылки rvalue и как работает std :: move?
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;
}
Спасибо.
Рекомендую посмотреть [Scott Meyers talk on Going Native 2013] (http://channel9.msdn.com/Events/GoingNative/2013/An-Effective-Cpp11-14-Sampler). Он подробно объясняет 'std :: move' и' std :: forward'. – danadam