Доброго здравия вам
Есть вот такой код (два файла):
a.cpp
#include <iostream>
namespace
{
int a = 0;
}
int main()
{
extern int a;
std::cout << a << std::endl;
std::cout << ::a << std::endl;
return 0;
}
b.cpp
int a = 1;
На GCC 4.7.2 я получаю вывод 1, 0
На VS 2012 получаю 0, 0.
Студия получается изменяет linkage переменной внутри анонимного namespace. Правильно ли это?
Читал стандарт и не нашел явных запретов на это, но и подтверждений такому поведению тоже (может быть что-то упустил).
Спасибо.