Instantiate an Object with curly braces C++
<p>I've read numerous explanations on initializing with braces:</p>

<pre><code>PhoneNumber homePhone = {858, 555, 1234};
</code></pre>

<p>as well as</p>

<pre><code>int x2 = val; // if val==7.9, x2 becomes 7 (bad)

char c2 = val2; // if val2==1025, c2 becomes 1 (bad)

int x3 {val}; // error: possible truncation (good)

char c3 {val2}; // error: possible narrowing (good)

char c4 {24}; // OK: 24 can be represented exactly as a char (good)

char c5 {264}; // error (assuming 8-bit chars): 264 cannot be 
               // represented as a char (good)
</code></pre>

<p>However, I've come across a bit of code here that I can't find an example on, perhaps I do not know the term so that I can google it:</p>

<pre><code>auto ac1 = ArrayClass{};
</code></pre>

<p>I am used to doing </p>

<pre><code>ArrayClass ac1 = new ArrayClass();
</code></pre>

<p>First of all is:</p>

<pre><code>auto ac1 = ArrayClass{};
</code></pre>

<p>the same as</p>

<pre><code>ArrayClass ac1 = ArrayClass{};
</code></pre>

<p>Secondly, </p>

<p>Am I only allowed to use braces if I used an initialization list in my constructor?</p>

<p>And lastly, if I have parameters, is the following correct?</p>

<pre><code>auto ac1 = ArrayClass{1,4,"hi", true}
</code></pre>

<p>Thank you for your help</p>