https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107792
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #0) > default std::handle_contract_violation called: N.B. The function is not in namespace std. This seems better: default handle_contract_violation called [default:default:NEVER] in function f at fail.cc:1: r > 0 terminate called without an active exception Aborted (core dumped) We could say "[level:default role:default continue:NEVER]" instead if the shorter form is too obscure. Maybe instead of saying the default handler was called, we should just say a contract was violated. That's what users actually care about, not the handler itself: contract violation in function f at fail.cc:1: r > 0 [level:default, role:default, continuation mode:never] terminate called without an active exception Aborted (core dumped)