
Howard Hinnant wrote: [...]
If the OS provides a mutex that is recursive without documenting that fact, then that sounds like a docs bug to me. If I need a recursive mutex, I will gladly use an OS-supplied one if I can find such a beast. Otherwise I have to build it myself out of an OS-supplied non-recursive mutex. If I find that I've ended up paying for recursion overhead twice, or unnecessarily re-implemented recursive mutexes for that platform, I'll send a bug report to the OS vendor.
However in this case a recursive mutex has been provided by the OS, you just decided to not use it (in order to implement the recursive condition::wait). It seems that you have accepted the responsibility for the tradeoff. For some reason, it also seems that it's time for me to shut up.