Как вернуть std::vector из функции, используя семантику перемещения C++11?

Я знаю, что C++11 имеет семантику перемещения по этой ссылке: Элементы стиля Modern C++

Но это не вводит, как вернуть вектор, используя семантику перемещения. Как это сделать?

1 ответ

Решение

Как это:

std::vector<std::string> make_a_vector_of_strings()
{
    std::vector<std::string> result;

    // just an example; real logic goes here
    result.push_back("Hello");
    result.push_back("World");

    return result;
}

Операнд оператора return имеет право на исключение копии, и если копия не исключена, операнд рассматривается для конструктора перемещения типа возвращаемого значения, поэтому все так хорошо, как только может быть.

Другие вопросы по тегам