В 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 : '}'
на строке, содержащей одну точку с запятой. Нашел ли я ошибку компилятора? Или основанный на диапазоне для петли неуловимый вне моего понимания?
Чтобы суммировать комментарии для любого, кто придет таким образом в будущем:
Это явно ошибка компилятора в 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;
}
Спасибо всем за вашу помощь.
Других решений пока нет …