#pragma once #include #include namespace base { template class OptionalLockGuard { public: explicit OptionalLockGuard(std::optional & optionalMutex) : m_optionalGuard(optionalMutex ? std::optional>(*optionalMutex) : std::nullopt) { } private: std::optional> m_optionalGuard; }; } // namespace base