title: constexpr array reference parameter
body: <p>Can someone please explain why the marked line below compiles fine:</p>
  
  <pre><code>template&lt;typename T, int N&gt;
  constexpr
  int get_size(T (&amp;)[N])
  {
      return N;
  }
  
  int main()
  {
      int xs[10];
      constexpr int y = get_size(xs); // HERE.
      static_assert(10 == y, "wrong size");
  }
  </code></pre>
  
  <p>Intuitively to me, <code>get_size(xs)</code> isn't a constant expression because <code>xs</code> itself isn't so I don't understand why it works.</p>