template<typename ObjectT, // the class type containing the counter
typename CountT, // the type of the counter
CountT ObjectT::*CountP> // the location of the counter
class MemberReferenceCount
{
public: // the default constructor and destructor are fine
// initialize the counter to one:
void init (ObjectT* object) {
object->*CountP = 1;
}
// no action is needed to dispose of the counter:
void dispose (ObjectT*) {
}