#pragma once #include #include typedef std::atomic counter; struct MaintainCount { counter & c; MaintainCount(counter & c) : c(c) { c++; } MaintainCount(counter & c, std::function warn) : c(c) { warn(++c); } ~MaintainCount() { auto prev = c--; assert(prev); } };