LINUX.ORG.RU

История изменений

Исправление rupert, (текущая версия) :

Книжка с какими-то устаревшими паттернами. Нафига делать out параметр, а потом свопить в него, когда можно просто возвратить по значению?

auto transmogrify(const std::vector<C>& in) {
    std::vector tmp;
    tmp.reserve(in.size());
    for (const auto& x : in) {
        tmp.push_back(transmogrify(x));
    }
    return tmp;
}

Здесь вообще даже не будет вызова move конструктора, потому что применится NRVO.

Исходная версия rupert, :

Книжка с какими-то устаревшими паттернами. Нафига делать out параметер, а потом свопить в него, когда можно просто возвратить по значению?

auto transmogrify(const std::vector<C>& in) {
    std::vector tmp;
    tmp.reserve(in.size());
    for (const auto& x : in) {
        tmp.push_back(transmogrify(x));
    }
    return tmp;
}

Здесь вообще даже не будет вызова move конструктора, потому что применится NRVO.