title: C++ template class type declaration with one more template parameter
body: <p>I have come across the declaration below</p>
  
  <pre><code>template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
  class basic_istream;
  </code></pre>
  
  <p>My doubt is: what is the purpose of the dependent <code>class traits = char_traits&lt;charT&gt;</code> part, when we could declare the whole thing with just</p>
  
  <pre><code>template &lt;class charT, class traits &gt;
  </code></pre>
  
  <p>If by using the latter we confirm to allow any type as second template argument, then why should we go for the other one?</p>