Как избежать копирования объектов с помощью инструкции «return»

У меня очень простой вопрос по C++. Как избежать копирования при возврате объекта?

Вот пример:

std::vector<unsigned int> test(const unsigned int n)
{
    std::vector<unsigned int> x;
    for (unsigned int i = 0; i < n; ++i) {
        x.push_back(i);
    }
    return x;
}

Насколько я понимаю, как работает C++, эта функция создаст 2 вектора :локальный (x )и копию x, которая будет возвращена. Есть ли способ избежать копирования? (и я хочу вернуть не указатель на объект, а сам объект)


Каким будет синтаксис этой функции с использованием «семантики перемещения» (, которая была указана в комментариях )?

34
задан Ciro Santilli 新疆改造中心法轮功六四事件 28 November 2018 в 13:43
поделиться