class Base { };
class Derived : public Base { };
Derived* derived = new Dervied();
shared_ptr<Base*> spBase(derived);
shared_ptr<Derived*> spDerived(derived);
위와 같은 경우,
shared_ptr 내부에서 delete derived; 구문이 두번 호출 되어 문제가 될것 같습니다.
제가 원하는 것은, derived 포인터를, Base* 와 Derived* 두 종류의 shared_ptr 로 관리하는 것인데요.
안타깝게도 shared_ptr<Derived*> spDerived = spBase; 처럼 사용할 수가 없네요. (생각해보면 저런 동작을 기대하는 것이 모순이지만요)