Возможный дубликат:
С++ 11 rvalues и смещение семантики семантики
То, что я считаю правильным,
std::string GetLine()
{
std::string str;
std::getline(std::cin, str);
return std::move(str);
}
Но по этой ссылке http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html (проверьте часть заголовка Возврат явного rvalue-reference из функции)
который является # 1 поисковым ударом Google для семантики перемещения, показывает аналогичную сигнатуру функции
int&& GetInt()
{
int x = 0;
// code here
return std::move(x);
}
Из того, что я читал в других местах && означает rvalue reference, поэтому в этом случае возвращается ссылка на объект, который не существует.
Итак, что это?
(Да, я знаю, что перемещение int не имеет реальной выгоды, но вопрос заключается в том, следует ли использовать возвращаемый тип std::string или std::string && & && & в первой функции. И если это так, для всех типов.)