title: Const char array with template argument size vs. char pointer
body: <p>I saw a construct of the following type in some code today:</p>
  
  <pre><code>template&lt;unsigned int N&gt; unsigned int f(const char (&amp;a)[N]);
  </code></pre>
  
  <p>Is there any reasonable point in having this over having:</p>
  
  <pre><code>unsigned int f(const char *a);
  </code></pre>
  
  <p>I vaguely understand the pointer sharing implications of the latter, but is it really so bad, that it needs to be replaced by an obscure code twice the size?</p>
  
  <p>(Unfortunately, I cannot ask the author of the code, otherwise I would)</p>