cout << "IFoo@" << static_cast<void*>(this) << "::Release(), refcount --> " << refcount_ << endl;
cout << "IFoo@" << STATIC_CAST(void*, this) << "::Release(), refcount --> " << refcount_ << endl;
IFoo::Release()	{		int wrap_message = (refcount_ == 1);		if ( wrap_message )			cout << ">>";					--refcount_;		cout << "IFoo@" << static_cast<void*>(this) << "::Release(), refcount --> " << refcount_ << endl;		if ( !refcount_ )			{				cout << "  delete IFoo@" << static_cast<void*>(this) << endl;				delete this;			}		if ( wrap_message )			cout << "<<IFoo@" << static_cast<void*>(this) << "::Release()" << endl;		return refcount_;	}