当基于范围的for循环和do while循环同时使用时,VS2013上的编译错误

时间:2016-01-08 09:42:17

标签: c++ visual-studio c++11

#include <vector>

int main()
{
    std::vector<int> v;
    for (int x : v) do {} while (0);
}

在VS2013上编译上面的代码将产生error C2059: syntax error : '}'。但是,GCC可以成功编译代码。

要重现错误,应满足以下要求:

  1. 使用基于范围的for循环;
  2. 不要用“{}”包围for-loop body;
  3. 在for-loop主体中写一个“do while”语句。
  4. 对此有何见解?

2 个答案:

答案 0 :(得分:0)

这是一个错误,它已在VS2015中修复。

答案 1 :(得分:0)

您可以使用括号来避免MSVC 2013错误。以下代码在MSVC 2013 Update 4中编译正常:

std::vector<int> v;
for (int x : v)
{
    do
    {
    } while (0);
}