CxxUtils::CachedUniquePtrT< T > Node1 CxxUtils::CachedUniquePtr T< T > + CachedUniquePtrT() + CachedUniquePtrT() + CachedUniquePtrT() + operator=() + ~CachedUniquePtrT() + set() + store() + get() + operator*() + operator->() + operator bool() + release() Node2 std::atomic< T * > Node2->Node1 -m_ptr Node3 T Node3->Node2 +ptr