cout << "IFoo@" << NS_STATIC_CAST(void*, this) << "::~IFoo()" << " [#" << total_destructions_ << "]" << endl;
printf("IFoo@%p::~IFoo() [#%d]\n", NS_STATIC_CAST(void*, this), total_destructions_);
IFoo::~IFoo()  {    ++total_destructions_;    cout << "IFoo@" << NS_STATIC_CAST(void*, this) << "::~IFoo()" << " [#" << total_destructions_ << "]" << endl;  }