Как вернуть 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 имеет право на исключение копии, и если копия не исключена, операнд рассматривается для конструктора перемещения типа возвращаемого значения, поэтому все так хорошо, как только может быть.