What language standards allow ignoring null terminators on fixed size arrays? : <p>We are transitioning C code into C++.<br>
I noticed  that the following code is well defined in C,  </p>

<pre><code>int main(){

  //length is valid. '\0' is ignored
  char  str[3]="abc";
}
</code></pre>

<p>as it is stated in <a href="http://en.cppreference.com/w/c/language/array_initialization">Array initialization</a> that:  </p>

<blockquote>
  <p>"If the size of the array is known, it may be one less than the size of
  the string literal, in which case the terminating null character is
  ignored."</p>
</blockquote>

<p>However, if I were to build the same code in C++, I get the following C++ error:  </p>

<pre><code>error: initializer-string for array of chars is too long
[-fpermissive]    char  str[3]="abc";
</code></pre>

<p>I'm hoping someone can expound on this.  </p>

<p><strong>Questions:</strong><br>
Is the code example valid in all C language standards?<br>
Is it invalid in all C++ language standards?<br>
Is there a reason that is valid in one language but not another?</p>
