https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77369
Daniel Böhmer <m...@daniel-boehmer.net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |m...@daniel-boehmer.net --- Comment #2 from Daniel Böhmer <m...@daniel-boehmer.net> --- I can confirm this issue for GCC 6.2.0 and std=c++17 Considering the following example, this issue is problematic, where std::terminate is called for func2(), instead of passing the exception to the caller. template<typename F> void caller(F&& f) { std::forward<F>(f)(); } void func1() noexcept { } void func2() { throw std::exception(); } int main() { caller(func1); try { caller(func2); } catch(...) { } return 0; }