class Base {
    public:
        Base()  = default;
        ~Base() = default;
    };

    class Data :public Base {
    public:
        Data(){}
        ~Data() = default;
      
    };

    std::unique_ptr<Base>  base_ = std::make_unique<Data<T>>()

     //编译报错 dynamic_case 不是多态类型,因为 dynamic_case 需要依赖虚函数表
     //然而 class Base 类中,没有 虚函数, 所以 class Data 中没有产生虚函数表, 只需要 将  ~Base()  =》 virtual  ~Base() 
     Data<T>* pdata = dynamic_cast<Data<T>*> (base_.get());