Странная синтаксическая ошибка в цикле for на основе диапазона

В Visual Studio 2013 я написал следующее в новом, совершенно новом решении для командной строки:

int main(int argc, char* argv[])
{
int xs[1];
for (auto x : xs)
do
;
while (0);
return 0;
}

Когда я компилирую, я получаю следующую ошибку:

error C2059: syntax error : '}'

на строке, содержащей одну точку с запятой. Нашел ли я ошибку компилятора? Или основанный на диапазоне для петли неуловимый вне моего понимания?

7

Решение

Чтобы суммировать комментарии для любого, кто придет таким образом в будущем:

Это явно ошибка компилятора в Visual Studio 2012 и 2013. Сообщение об ошибке, выдаваемое Visual Studio, явно поддельное, и другие компиляторы работают как положено.

Самый простой обходной путь для меня — просто поставить скобки вокруг всего цикла do-while, например, так:

int main(int argc, char* argv[])
{
int xs[1];
for (auto x : xs)
{
do
;
while (0);
}
return 0;
}

Спасибо всем за вашу помощь.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]