https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118722
Daniel Krügler <daniel.kruegler at googlemail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.kruegler@googlemail. | |com --- Comment #1 from Daniel Krügler <daniel.kruegler at googlemail dot com> --- Your program does not require the definition of T::x to exist, because the selected operator<< takes an int, not some reference to it. If you change your program to something like this, a definition is required: struct T{ static const int x = 1; }; const int *p = &T::x; int main (){ return *p; }