https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66902
--- Comment #7 from Vadim Zhukov <persgray at gmail dot com> --- (In reply to Jonathan Wakely from comment #6) > 3.5 [basic.link]: > > -3- A name having namespace scope (3.3.6) has internal linkage if it is the > name of > — a variable, function or function template that is explicitly declared > static; or, > — a variable of non-volatile const-qualified type that is neither > explicitly declared extern nor previously declared to have external > linkage; or > — a data member of an anonymous union. > > The first bullet applied when it was explicitly declared static and the > second bullet applies now that it is a const-qualified type at namespace > scope. In both cases it has internal linkage, so you should not see a global > symbol and should not get the warning. Sorry, I've missed that. Thank you for clarification.