%module cpp_shared_ptr %include %shared_ptr(B); %shared_ptr(C); %inline %{ #include #include struct A { virtual ~A() {} }; struct B { virtual ~B() {} }; struct C : B, A { virtual ~C() {} }; struct D : C { virtual ~D() {} }; %}