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

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

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

set 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)

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