Как избежать копирования, когда я вернусь

У меня есть функция, которая возвращает вектор или набор:

set<int> foo() {
    set<int> bar;
    // create and massage bar
    return bar;
}

set<int> afoo = foo();

В этом случае я создаю временную область памяти в функции foo (), а затем назначаю ееafoo копируя. Я действительно хочу избежать этой копии, любой простой способ сделать это в C ++ 11? Я думаю, что это связано с самой важной вещью.

Хорошо, перейдите к следующему вопросу: если я собираюсь вернуть объект, определенный мной, а не вектор или набор, означает ли это, что я должен определить конструктор перемещения? нравится:

class value_to_return {
  value_to_return (value_to_return && other) {
    // how to write it here? I think std::move is supposed to be used?
  }
}

Спасибо!!!

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

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