#pragma once #include #include template class Serialized { mutable std::shared_mutex m; StateT s; public: void Read(std::function fn) const { std::shared_lock lock{ m }; fn(s); } void Access(std::function fn) { std::unique_lock lock{ m }; fn(s); } void Reset() { std::unique_lock lock{ m }; s = {}; } };