Are there differences between explicit type conversion "operators" in case of basic types?
<p>Simple thing: I would like to "convert" e.g. a <code>float</code> into a <code>double</code>. Now there are three ways known to me:</p>

<pre><code>float v = 4.2f;
</code></pre>

<ol>
<li><code>double u = (double)v;</code></li>
<li><code>double u = double(v);</code></li>
<li><code>double u = static_cast&lt;double&gt;(v);</code></li>
<li><code>double u(v);</code> <strong>Edit: Just thought about this as a fourth option!</strong></li>
</ol>

<p>Are these identical or are there any subtle differences? What do you suggest to use?</p>

<p>Note that this question is only related to basic types like int, char, float, ... not to pointers, PODs or classes.</p>
