2016-07-06 29 views
0

我想在VS 2008运行下面的一段代码循环范围: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; 
} 

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

错误C2143:语法错误:缺少“”前' :'

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

+1

你确定你正在编译C++ 11吗? –

+0

@BatCoder:考虑到C++ 11是指2011年,而VS2008到2008年,我敢肯定答案是否定的。 – MSalters

回答

8

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

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

您最好升级到VC2015。

+2

或者,如果你坚持使用VC2008,请使用BOOST_FOREACH –