diff --git a/include/hyprutils/memory/Atomic.hpp b/include/hyprutils/memory/Atomic.hpp index 3fcb0f0..1ccf152 100644 --- a/include/hyprutils/memory/Atomic.hpp +++ b/include/hyprutils/memory/Atomic.hpp @@ -22,6 +22,10 @@ namespace Hyprutils::Memory { }; } + // Forward declaration for friend + template + class CAtomicWeakPointer; + template class CAtomicSharedPointer { template @@ -157,11 +161,15 @@ namespace Hyprutils::Memory { return m_ptr.impl_ ? m_ptr.impl_->ref() : 0; } + private: std::lock_guard implLockGuard() const { return ((Atomic_::impl*)m_ptr.impl_)->lockGuard(); } CSharedPointer m_ptr; + + template + friend class CAtomicWeakPointer; }; template @@ -320,6 +328,7 @@ namespace Hyprutils::Memory { return CAtomicSharedPointer(m_ptr.impl_); } + private: std::lock_guard implLockGuard() const { return ((Atomic_::impl*)m_ptr.impl_)->lockGuard(); }