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;
}
所以,我的编辑器插入了一对额外的大括号 - 我很惊讶代码没有编译。任何人都可以解释这里发生了什么。
答案 0 :(得分:6)
这与auto无关 - 这也不会编译:
int main()
{
int a[5];
for(( int n : a )) {
}
}
额外的括号试图将其中的内容变成表达式。