这里不允许使用额外大括号' auto编译错误'

时间:2017-03-07 16:58:42

标签: c++

template <typename T, size_t N>
class myarray : public std::array<T, N>
{
};

int main()
{

   myarray< myarray<unsigned int , 4>, 8> test2d;
   // Why does using an extra pair of braces gives a compile error
   for ((auto &n : test2d)) {
     n.fill(0xdeadbeef); // init a 2D array
   }    
   return 0;
}

所以,我的编辑器插入了一对额外的大括号 - 我很惊讶代码没有编译。任何人都可以解释这里发生了什么。

1 个答案:

答案 0 :(得分:6)

这与auto无关 - 这也不会编译:

int main()
{
    int a[5];
    for(( int n : a )) {
    }
}

额外的括号试图将其中的内容变成表达式。