https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109656
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|14.3 |14.0 --- Comment #13 from Jonathan Wakely <redi at gcc dot gnu.org> --- I see why that fixed it. // Check whether TOKEN can construct a std::random_device successfully. inline bool random_device_available(const std::string& token) noexcept { try { std::random_device dev(token); return true; } catch (const std::system_error& /* See PR libstdc++/105081 */) { return false; } } If the dev(token) constructor throws std::runtime_error instead of std::system_error then it won't be caught, and will hit the 'noexcept' on the surrounding function. r14-2217 made it throw std::system_error, so it's caught now. But I wouldn't expect "terminate without active exception". Definitely fixed by that commit anyway.