2017-03-07 38 views
1
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; 
} 

所以,我的編輯插入了一對額外的大括號 - 我驚訝於代碼沒有編譯。任何人都可以解釋這裏發生了什麼。編譯器錯誤,不允許在這裏使用額外的大括號''''

回答

6

這無關汽車 - 這不會編譯之一:

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

額外的括號試圖把裏面什麼他們到表達。

相關問題