https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112553
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Federico Kircheis from comment #0) > If "do_something" throws, as the lambda is marked noexcept, there should be > a call to std::terminate, but it is not the case: > https://godbolt.org/z/xjqzTdrWG Nothing in the standard supports your claim. The standard only says that std::terminate is invoked, not that a call to it must appear in the assembly code for the function. G++ will invoke std::terminate in a complete example as Andrew showed. And it does it with smaller, more cache-friendly code.