title: Why does compiler allow out-of-bounds array access even with constexpr index?
body: <p>For example if we have an <code>std::array</code> and we instantiate an element that is out of bound using <code>constexpr</code> the compiler wouldn't report error:</p>
  
  <pre><code>constexpr int EvaluateSpecialArrayIndex(int a)
  { return a * sizeof(int); }
  
  array&lt;int, 5&gt; arr;
  
  cout &lt;&lt; arr[98] &lt;&lt; endl; //compiles fine
  
  cout &lt;&lt; arr[EvaluateSpecialArrayIndex(4)] &lt;&lt; endl; //the same as above
  </code></pre>
  
  <p>Can't we restrict this somehow?</p>