2015-04-11 5 views

ответ

7

Как это:

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; 
} 

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

+0

Я вижу несколько сообщений с использованием std :: vector && в качестве типа возврата или возврата (результат). Все это меня смущает! –

+2

@DeanChen: Обе эти идеи звучат совершенно неправильно. –

+0

Я думаю, вам следует квалифицировать, что 'result' перемещается только в return-statement, поскольку это локальная переменная/параметр. Если 'result' был членом данных (или глобальным, eww), он не будет перемещен. – dyp