title: How does std::chrono::duration default constructed?
body: <p><a href="http://en.cppreference.com/w/cpp/chrono/duration/duration" rel="nofollow noreferrer">cppreference.com</a> says <code>The default constructor is defaulted</code>. I also checked the <code>C++14 draft</code>, it said nothing on the default constructor, except the declaration: <code>constexpr duration() = default;</code></p>
  
  <p>When I run the following code, I was surprised.</p>
  
  <pre><code>chrono::seconds s;
  cout &lt;&lt; s.count() &lt;&lt; endl;
  </code></pre>
  
  <p>Each time I run it, the program prints some arbitrary numbers: <code>140737364037104</code>, <code>140737078676496</code> and so on.</p>
  
  <p>It seems that <code>s</code> does NOT well initialized. Then I checked my compiler (GCC 4.8)'s implementation for <code>std::chrono::duration</code>. This class has a data member (i.e. the <code>count</code>) of int type without any in-class initializer. And the constructor is default constructed. So the data member is, in fact, uninitialized. And that's why the program always prints some arbitrary numbers.</p>
  
  <p>The followings are my questions:</p>
  
  <ol>
  <li>Is that the right behavior? Or the compiler should give the data member an in-class initializer?</li>
  <li>If that's the right behavior, why does the standard NOT specify a default value, say <code>0</code>, for <code>std::chrono::duration</code>?</li>
  </ol>