https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31158
--- Comment #5 from Martin Sebor <msebor at gcc dot gnu.org> --- I didn't test carefully enough. The C front end does the right thing (below) but as you noted the C++ front end does still suffer from the problem. Thanks for double checking me! $ /build/gcc-trunk-svn/gcc/xgcc -B /build/gcc-trunk-svn/gcc -S -Wall -Wextra gcc-31158.c gcc-31158.c: In function ‘main’: gcc-31158.c:5:21: warning: overflow in implicit constant conversion [-Woverflow] /* 5 */ { 65536U } ^~~~~~ $ /build/gcc-trunk-svn/gcc/xgcc -B /build/gcc-trunk-svn/gcc -S -Wall -Wextra -std=c++98 -xc++ gcc-31158.c gcc-31158.c: In function ‘int main()’: gcc-31158.c:6:15: warning: narrowing conversion of ‘65535u’ from ‘unsigned int’ to ‘short int’ inside { } is ill-formed in C++11 [-Wnarrowing] /* 6 */ }; ^ gcc-31158.c:6:15: warning: narrowing conversion of ‘65536u’ from ‘unsigned int’ to ‘short int’ inside { } is ill-formed in C++11 [-Wnarrowing] gcc-31158.c:6:15: warning: overflow in implicit constant conversion [-Woverflow]