Unikanie kopii obiektów z instrukcją „powrotu”

Mam bardzo podstawowe pytanie w C ++. Jak uniknąć kopiowania podczas zwracania obiektu?

Oto przykład :

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

Ponieważ rozumiem, jak działa C ++, ta funkcja utworzy 2 wektory: lokalny (x) i kopię x, która zostanie zwrócona. Czy istnieje sposób na uniknięcie kopii? (i nie chcę zwracać wskaźnika do obiektu, ale samego obiektu)

Jaka byłaby składnia tej funkcji przy użyciu „semantyki ruchu” (co stwierdzono w komentarzach)?

questionAnswers(7)

yourAnswerToTheQuestion