title: Why can't static_cast a double void pointer?
body: <p>Consider the following piece of code:</p>
  
  <pre><code>void **v_dptr(nullptr);
  int  **i_dptr = static_cast&lt;int**&gt;(v_dptr);
  </code></pre>
  
  <p>The above example produces the following compile error:</p>
  
  <blockquote>
    <p><code>static_cast from 'void **' to 'int **' is not allowed</code></p>
  </blockquote>
  
  <p><a href="http://coliru.stacked-crooked.com/a/030b91e0406120b4" rel="noreferrer"><strong>LIVE DEMO</strong></a></p>
  
  <p>I know that the proper way to cast a <code>void</code> pointer to any other pointer type is to use <code>static_cast</code>. However, you can't <code>static_cast</code> a double <code>void</code> pointer to another double pointer of other type.</p>
  
  <h2>Q:</h2>
  
  <ol>
  <li>Why we can't <code>static_cast</code> a double <code>void</code> pointer?</li>
  <li>What's the proper way to cast a double <code>void</code> pointer?</li>
  </ol>