Yes this was the easy way for me to try different implementations for the C++11 version.

The C++11 implementation also changes the storage `std::atomic<bool>` instead of `volatile int` at that point almost everything in the class has changed and the skeleton is really cluttered with macros and harder to understand.
That said, I agree both implementations would make sense and I have no strong opinion about it. I can also change the original implementation so you can see how it looks and add a flag to switch between the two. When we agree on which one makes more sense I can clean up the unwanted implementation.