Change: Names declared in an anonymous namespace
changed from external linkage to internal linkage;
language linkage applies to names with external linkage only.
Effect on original feature: Valid C++ 2003 code may violate the one-definition rule ([basic.def.odr])
in this revision of C++.
[Example 2: namespace{extern"C"{externint x; }}// #1, previously external linkage and C language linkage,// now internal linkage and C++ language linkagenamespace A {extern"C"int x =42; }// #2, external linkage and C language linkageint main(void){return x; }
This code is valid in C++ 2003,
but #2 is not a definition for #1
in this revision of C++, violating the one-definition rule.