Новый синтаксис диапазона C ++ 11 (foreach): какие компиляторы его поддерживают? - PullRequest
11 голосов
/ 17 февраля 2011

Я видел этот фрагмент кода c ++ 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

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

Ответы [ 2 ]

7 голосов
/ 17 февраля 2011

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

1 голос
/ 10 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...