title: Is it practically safe to cast container of T* to container of const T*?
body: <p>For instance,</p>
  
  <pre><code>std::vector&lt;SomeNonCopyableType*&gt; values = getVector();
  auto &amp;cvalues = reinterpret_cast&lt;std::vector&lt;const SomeNonCopyableType*&gt;&amp;&gt;(values);
  
  // use cvalues...
  </code></pre>
  
  <p>This is not allowed in standard of course.
  However, constness of pointed type won't make any difference in implementation detail unless they're specialized. In this case, may I consider this conversion is safe practically?</p>
  
  <p>If it is a bad idea, is there graceful way to make a container of pointer to const from container of pointer to non-const without making copy?</p>