title: Do built-in types have default constructors?
body: <p>After reading <a href="http://geeksforgeeks.org/?p=10859" rel="nofollow noreferrer">this</a> article I made a point that <code>int ()</code> yields 0 because the temporary <code>int</code> is value initialized and not because <code>int()</code> calls the default constructor for <code>int</code>. (The article is flawed according to my understanding.)</p>
  <p>I also said that primitive (built-in) types don't have constructors. The original author asked me to check Section $10.4.2 (TC++PL) which says</p>
  <blockquote>
  <p>Built-in types also have default constructors ($6.2.8)</p>
  </blockquote>
  <p>But I still think that the statement &quot;C++ allows even built-in type (primitive types) to have default constructors.&quot; is flawed (as per C++03).</p>
  <p>I think Bjarne in TC++PL has mixed up &quot;constructor like notation i.e <code>()</code>&quot; with actual constructor call. Value initialization was not introduced at that time when Bjarne was writing the book, right? So is the text in TC++PL incorrect as per C++98 and C++03?</p>
  <p>What do you guys think?</p>
  <p><strong>EDIT</strong></p>
  <p>I asked Bjarne personally (via mail) regarding the flawed text in TC++PL and this was his reply</p>
  <blockquote>
  <p>I think you mix up &quot;actual constructor calls&quot; with conceptually having a constructor.  <em>Built-in types are considered to have constructors</em> (whatever words the standard uses to describe their behavior).</p>
  </blockquote>