Новый синтаксис диапазона С++ 11 для foreach: какие компиляторы его поддерживают?

Я видел этот фрагмент кода С++ 11 в эту презентацию BoostCon Джереми Сика:

deque<int> topo_order;
topological_sort(g, front_inserter(topo_order));

for (int v : topo_order){ //line 39
    cout << tasks[v] << endl;
}

При попытке компиляции в gcc возникает следующая ошибка:

main.cpp:39: error: expected initializer before ‘:’ token

после чего мне стало интересно, какие компиляторы действительно поддерживают этот синтаксис?

Ответ 1

Ну, по крайней мере GCC поддерживает его в версии 4.6 (функция называется "Range-based for" ). Если у вас уже установлена ​​последняя версия, не забудьте добавить опцию -std=c++0x.

Ответ 2

В дополнение к версиям gcc позже версии 4.6, как Clang 3.0, так и Visual С++ 11 (как и в Visual С++ 11 Beta) поддерживают эту языковую языковую среду С++ 11.