Следующая тестовая программа
#include <map>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
map<int,int> a;
a[1]=a.size();
for(map<int,int>::const_iterator it=a.begin(); it!=a.end(); ++it)
cout << "first " << (*it).first << " second " << (*it).second << endl;
}
приводит к разному выходу при компиляции на g++ 4.8.1
(Ubuntu 12.04 LTS):
g++ xxx.cpp
./a.out
first 1 second 1
и на Visual Studio 2012 (Windows 7) (стандартный проект приложений консоли Win32):
ConsoleApplication1.exe
first 1 second 0
Какой компилятор прав? Я что-то делаю неправильно?