https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122197
--- Comment #20 from Jonathan Wakely <redi at gcc dot gnu.org> --- Ah yes, std::condition_variable_any uses std::make_shared<std::mutex>(). So GCC sees that a shared_ptr<mutex> is created elsewhere in the program, and then devirtualizes every use of make_shared to handle the case of make_shared<mutex>().
