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