1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
struct Atomic_t { Atomic_t(int i) : val(i) { } volatile int val; }; class RefCount { public: RefCount(Atomic_t c) : m_count(c) { } Atomic_t m_count; }; class IntrusiveCountableBase { RefCount m_useCount; protected: IntrusiveCountableBase(); }; IntrusiveCountableBase::IntrusiveCountableBase() : m_useCount(0) { }