Странная синтаксическая ошибка в цикле 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 : '}'

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

1 ответ

Решение

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

Это явно ошибка компилятора в 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;
}

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

Другие вопросы по тегам