Спасибо за все ответы в комментариях.
Затем я вернулся к стандарту c ++ 98 и 03, и да, 8.5.4, безусловно, новая секунда в c ++ 11!Вот почему он не поддерживается полностью всеми компиляторами.
После добавления флага -std = c ++ 0x с gcc 4.6.1 теперь это прекрасно компилируется.
Добавление кода тестирования для всех, ктоможет понадобиться ссылка:
#include <map>
#include <string>
#include <initializer_list>
#include <iostream>
using namespace std;
int main()
{
std::map<std::string,int> collection = {{"bear",4}, {"cassowary",2}, {"tiger",7}};
for(auto it: collection)
std::cout << it.first << " has value " << it.second << std::endl;
return 0;
}