class A {
public:
  virtual A* Clone() const {
    return new A(*this);
  }
};
class B : public A {
public:
  A* Clone() const override {
    return new B(*this);
  }
};
이걸 포인터 안쓰고 똑같이 구현할 수 있는 방법 있음?
std::vector<A>로 B, 그 외 A를 상속하는 클래스 객체를 담고싶은데 유니크 포인터까지 쓰니까 너무 장황해 std::vector<std::unique_ptr<A>> 이렇게 담게 돼버리니 ㅠ

CRTP도 안쓰고 포인터도 안쓰고 구현 가능한 방법 있냐?