#include static int mybase_construct; static int mybase_destroy; static int myderived_construct; static int myderived_destroy; class MyBase : public root { protected: MyBase(int x, int y) { mybase_construct++; } virtual ~MyBase() { mybase_destroy++; } public: rcp_managed(MyBase); }; class MyDerived : public MyBase { protected: MyDerived(double v) : MyBase(1, 2) { myderived_construct++; } virtual ~MyDerived() { myderived_destroy++; } public: rcp_managed(MyDerived) }; void t1() { rcp mybase = MyBase::create(4, 5); rcp myderived = MyDerived::create(42.5); } int main(int argc, char * argv[]) { t1(); return 0; }