title: Default template parameter partial specialization
body: <p>Please explain to me why the following piece of code complies and works perfectly.
  I am very confused.</p>
  
  <pre><code>#include&lt;iostream&gt;
  template&lt;class A = int, class B=double&gt;
  class Base
  {};
  
  template&lt;class B&gt;
  class Base &lt;int, B&gt;
  {
  public:
    Base()
    {
       std::cout&lt;&lt;"it works!!!!!\n";
    }
  };
  
  int main()
  {
    Base&lt;&gt; base; // it prints "it works!!!!!"
    return 0;
  }
  </code></pre>
  
  <p>Shouldn't it fall into the generalized form of the template class Base?</p>