#include <vector> #include <memory> std::vector<std::unique_ptr<SOMETYPE>> v{}; auto ptr = std::make_unique<SOMETYPE>(some_arguments); v.push_back(std::move(ptr)); // v.emplace_back(std::move(ptr)); // push_backの代わりに、こっちでも可。
みたいな形で、std::moveを指定して、vectorに所有権を移す必要がある。
ちなみに、「v.push_back(ptr);」とすると、ビルドが通らなくなる。