https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69138
Xi Ruoyao <ryxi at stu dot xidian.edu.cn> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ryxi at stu dot xidian.edu.cn --- Comment #3 from Xi Ruoyao <ryxi at stu dot xidian.edu.cn> --- > template <typename T> > class B { > static constexpr uint8_t small_within_templated_class = 0xFFFFFFFF; > }; > > constexpr uint8_t i = B<int>::small_within_templated_class; "s/class/struct/" to make member public. This case is NOT warned. But clang++ warns: ~~~ pr69138-1.cpp:4:59: warning: implicit conversion from 'unsigned int' to 'const uint8_t' (aka 'const unsigned char') changes value from 4294967295 to 255 [-Wconstant-conversion] static constexpr uint8_t small_within_templated_class = 0xFFFFFFFF; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~ 1 warning generated. ~~~