UMutex not is_trivially_constructible
We are seeing a compile error on Windows with the clang compiler, a failing
Turns out is_trivially_constructible is not guaranteed for the std::atomic<pointer> inside the UMutex.
PR 870 "UMutex not trivially but constexpr constructible" should do.
For the record, if this is not good enough, here is another idea we discussed briefly:
umutex.cpp has some trickery for the global mutex, using a std::once_flag and a pointer to it so it can be recycled. If needed, we could probably replace the std::atomic<std::mutex *> fMutex with a raw pointer plus a once_flag and a once_flag* and do the same trick inside UMutex::getMutex() and UMutex::cleanup().