C ++ 0x отсутствует. Это было рабочее название для того, что наконец стало C ++ 11 12 августа 2011 года.
Стандарт содержит много частей, которые были составлены отдельно, и компиляторы начали поддерживать их индивидуально еще до того, как стандарт был завершен, но, с другой стороны, некоторые части еще не поддерживаются вообще. Поэтому вам нужно проверить, поддерживает ли ваш компилятор те функции, которые вы хотите использовать.
Теперь частный случай std::unordered_map
, он был впервые стандартизирован в C ++ TR1 , но произошел задолго до этого в boost . Большинство компиляторов, которые не поддерживают C ++ 11, поддерживают TR1, поэтому std::tr1::unordered_map
будет там, и вы всегда можете взять его с наддува для тех, кто этого не делает.
Что касается gcc, ошибка в том, что вам нужно включить C ++ 11. Это делается простым добавлением опции -std=c++0x
в командную строку компилятора. Это сделано для того, чтобы вы случайно не использовали функцию C ++ 11 в коде, который все еще заботится о переносимости в компиляторы C ++ 03.