how can one implement gcc's cleanup attribute for msvc?
how destructors are implemented on top of msvc?
In addition I want the behavior to be identical to the cleanup attribute so atexit is not an option since the cleanup should be performed at the end of each block.