template <class C> static std::unique_ptr<C> _copy(const std::unique_ptr<C>& other) { auto ans = std::make_unique<C>(); *ans = *other; return ans; }