title: Why do I get error "declaration as array of references" when I use the reference operator without parentheses in a 2D array parameter?
body: <p>I understand C++ passes arrays by reference even if we don't use the reference operator (&amp;), but since it can be added with no harm (I think), I'm curious as to why this code throws</p>
  
  <blockquote>
    <p>declaration of 'matrix' as array of references</p>
  </blockquote>
  
  <pre><code>void function (int &amp;matrix[2][5])  {
      //something
  }
  
  int main()  {
      int matrix[2][3] = {{1,2,3}, {4,5,6}};
      function(matrix);
  }
  </code></pre>
  
  <p>while adding parentheses in <code>(&amp;matrix)</code> works:</p>
  
  <pre><code>void function (int (&amp;matrix)[2][5])  {
      //something
  }
  </code></pre>