#pragma once #include namespace dxvk { /** * \brief Lazy-initialized object * * Creates an object on demand with * the given constructor arguments. */ template class Lazy { public: template T& get(Args... args) { if (m_object) return *m_object; std::lock_guard lock(m_mutex); if (!m_object) { m_object = std::make_unique( std::forward(args)...); } return *m_object; } private: dxvk::mutex m_mutex; std::unique_ptr m_object; }; }