return refcount_;
							void	set_a_IFoo( COM_auto_ptr<IFoo>* result );COM_auto_ptr<IFoo>	return_a_IFoo();class IFoo // : public ISupports	{		public:			IFoo();			virtual ~IFoo();			virtual void AddRef();			virtual void Release();			// virtual NS_RESULT QueryInterface			static void print_totals();		private:			unsigned int refcount_;			static unsigned int total_constructions_;			static unsigned int total_destructions_;	};unsigned int IFoo::total_constructions_;unsigned int IFoo::total_destructions_;class test_message	{		public:			test_message()				{					cout << "BEGIN unit tests for |COM_auto_ptr|, compiled " __DATE__ << endl;				}		 ~test_message()				{					IFoo::print_totals();					cout << "END unit tests for |COM_auto_ptr|." << endl;				}	};test_message gTestMessage;	/*		...	*/voidIFoo::print_totals()	{		cout << "total constructions/destructions --> " << total_constructions_ << "/" << total_destructions_ << endl;	}IFoo::IFoo()		: refcount_(0)	{		++total_constructions_;		cout << "  new IFoo@" << static_cast<void*>(this) << " [#" << total_constructions_ << "]" << endl;	}IFoo::~IFoo()	{		++total_destructions_;		cout << "IFoo@" << static_cast<void*>(this) << "::~IFoo()" << " [#" << total_destructions_ << "]" << endl;	}voidIFoo::AddRef()	{		++refcount_;		cout << "IFoo@" << static_cast<void*>(this) << "::AddRef(), refcount --> " << refcount_ << endl;	}voidIFoo::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;	}NS_RESULTCreateIFoo( void** result )		// a typical factory function (that calls AddRef)	{		cout << ">>CreateIFoo() --> ";		IFoo* foop = new IFoo;		cout << "IFoo@" << static_cast<void*>(foop) << endl;		foop->AddRef();		*result = foop;		cout << "<<CreateIFoo()" << endl;		return 0;	}voidset_a_IFoo( COM_auto_ptr<IFoo>* result )	{		cout << ">>set_a_IFoo()" << endl;		assert(result);		COM_auto_ptr<IFoo> foop( new IFoo );		*result = foop;		cout << "<<set_a_IFoo()" << endl;	}