循环范围:VS 2008不支持它?

kuk*_*uku 0 c++ visual-studio

我试图在VS 2008上运行以下代码.

int main(){
for(int n: {0, 1, 2, 3, 4, 5}) // the initializer may be a braced-init-list
        std::cout << n << ' ';

return 0; 
}
Run Code Online (Sandbox Code Playgroud)

但是编译器给了我以下警告:

错误C2143:语法错误:在':'之前缺少','

在我看来,VS 2008不支持循环范围.真的吗?谢谢

Bat*_*eba 8

for您正在使用的范围循环和初始化程序列表符号都是在C++ 11标准中引入的.

支持范围for循环的最早的VC编译器是VC2013,但该编译器没有完全实现(甚至声称实现)C++ 11标准.(例如,它不允许您以您拥有的方式使用初始化列表.)

您最好升级到VC2015.

  • 或者,如果您遇到VC2008,请使用BOOST_FOREACH (2认同)