#include <iostream>

struct SomeNonTrivialType {
    SomeNonTrivialType() { std::cout << "SomeNonTrivialType()" << std::endl; }
    ~SomeNonTrivialType() { std::cout << "~SomeNonTrivialType()" << std::endl; }
};

class A {
public:
    virtual ~A() {}
private:
    int a;
};

class B : public A {
private:
    SomeNonTrivialType b;
};

int main() {
    A *a = new B;
    delete a;
    return 0;
}