https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105681
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- And it was indeed something I asked for, see r12-2355 c++: Don't hide narrowing errors in system headers Jonathan pointed me at this issue where constexpr unsigned f() { constexpr int n = -1; return unsigned{n}; } is accepted in system headers, despite the narrowing conversion from a constant. I suspect that whereas narrowing warnings should be disabled, ill-formed narrowing of constants should be a hard error (which can still be disabled by -Wno-narrowing).