This series fixes the std::shared_timed_mutex negative timeout bug[0] and adds test cases to the other standard library wait functions that take a timeout. Those test cases revealed a similar bug in std::binary_semaphore and std::counting_semaphore which I've also fixed.
This series does nothing to address the problems I identified[1] in how std::shared_timed_mutex deals with error returns that made this bug even more serious[2]. I'll deal with that separately, ideally once I receive some guidance as to the best way forward. Thanks. Mike. [0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116586 [1] https://gcc.gnu.org/pipermail/libstdc++/2025-August/062846.html [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121141