使用auto in loop错误“auto必须有一个初始化程序”

时间:2014-08-11 01:42:32

标签: c++ auto

我想使用 auto 关键字,但在编译时遇到此错误(Visual C ++ Express 2010)

typedef std::list<int> MyList;

int main()
{
    const int args[] = {0, 1, 2};
    MyList myList(std::begin(args), std::end(args));

    for(auto& value : myList) 
    {
        std::cout << value << std::endl;
    }
}

输出:

error C2143: syntax error : missing ',' before ':'
error C2530: 'value' : references must be initialized
error C3531: 'value': a symbol whose type contains 'auto' must have an initializer

2 个答案:

答案 0 :(得分:2)

您的代码中存在两个问题:

  1. 您需要明确包含您使用的功能的标头。

    #include <list>
    #include <iostream>
    
  2. VS2010不支持基于C ++ 11范围的“for”循环。该功能很晚才实现。请参阅下表:http://msdn.microsoft.com/en-us/library/hh567368.aspx

答案 1 :(得分:1)

VS2010中的C ++编译器确实支持基于范围的for循环,但使用a pre-standard syntax。 (严肃地说,你不能指望编译器在标准完全符合之前大约2年完成)

for each (int& value in myList) 
{
    std::cout << value << std::endl;
}