title: Why can't I use std::begin/std::end with int(*p)[3] while I can with int(&p)[3]?
body: <p>This works:</p>
  
  <pre><code>void foo(int (&amp;a)[3]) {
      auto ibegin = begin(a);
      auto ebegin = end(a);
  }
  </code></pre>
  
  <p>While this doesn't:</p>
  
  <pre><code>void foo(int (*a)[3]) {
      auto ibegin = begin(a);
      auto ebegin = end(a);
  }
  </code></pre>
  
  <p>I consider <code>int (&amp;a)[3]</code> and <code>int (*a)[3]</code> have the same meaning! </p>