title: In C++, can we use { } for C-Style casting?
body: <p>While I have been reading about datatype conversion, I saw this example:</p>
  
  <pre><code>void intval()
  {
      for (char c; cin &gt;&gt; c; )
      cout &lt;&lt; "the value of '" &lt;&lt; c &lt;&lt; "' is " &lt;&lt; int{c} &lt;&lt; '\n';
  }
  </code></pre>
  
  <p>I know that we can cast using:</p>
  
  <ol>
  <li><code>int(c)</code>  </li>
  <li><code>(int) c</code></li>
  <li><code>static_cast&lt;int&gt;(c)</code></li>
  </ol>
  
  <p>My questions:  </p>
  
  <p>Q1: Is <code>int{c}</code> another way of casting data types?  </p>
  
  <p>Q2: After some research on the net, I know that C++ casting is different and it have the compiler check the casting possibility at the compile time, but what are the differences between 1 and 2? And how <code>int{c}</code> is different if it is just another casting way?  </p>
  
  <p>Q3: Are there any other ways to explicitly convert/cast?</p>