Когда следует использовать std :: move для возвращаемого значения функции? [Дубликат]

На этот вопрос уже есть ответ здесь:

c ++ 11 Оптимизация возвращаемого значения или переезд? [Дубликат] 4 ответа

В этом случае

struct Foo {};
Foo meh() {
  return std::move(Foo());
}

Я уверен, что этот шаг не нужен, потому что недавно созданныйFoo будет xvalue.

Но что в подобных случаях?

struct Foo {};
Foo meh() {
  Foo foo;
  //do something, but knowing that foo can safely be disposed of
  //but does the compiler necessarily know it?
  //we may have references/pointers to foo. how could the compiler know?
  return std::move(foo); //so here the move is needed, right?
}

Там движение необходимо, я полагаю?

Ответы на вопрос(6)

Ваш ответ на вопрос