Предполагая, что этот код:вектор unique_ptr, наследование?
class Parent {}
class Child : public Parent {}
static std::vector<std::unique_ptr<Child>> Foo();
Есть более простой способ, чтобы написать эту функцию:
std::vector<std::unique_ptr<Parent>> Bar() {
auto children = Foo();
std::vector<std::unique_ptr<Parent>> parents;
result.insert(result.end(), std::make_move_iterator(children.begin()),
std::make_move_iterator(children.end()));
return parents;
}
Это не работает:
std::vector<std::unique_ptr<Parent>> Bar() {
return Foo(); // Compiler error: cannot convert from vector<...> to vector<...>
}
FYI: Это точно так же, проблема с исходными указателями. – rubenvb
@ rubenvb: Вы правы, я никогда не замечал ... :) –