title: Base class template instantiation depending on derived class constructor argument type
body: <p>In the following, shouldn't base class constructor be generated by the compiler based on derived class constructor argument type?</p>
  
  <pre><code>template &lt;class T&gt;
  class foo
  {
  int a;
  public:
      foo(T a){}
      // When I convert the constructor to a function template, it works fine.
      // template &lt;typename T&gt; foo(T a){}
  };
  
  class bar : public foo&lt;class T&gt;
  {
  public:
      bar(int a):foo(a){}
  };
  
  int main(void)
  {
      bar obj(10);
      system("pause");
      return 0;
  }
  </code></pre>
  
  <blockquote>
    <p>error C2664: 'foo::foo(T)' : cannot convert parameter 1 from 'int' to 'T'</p>
  </blockquote>
  
  <p>I understand the error, but why is that ?</p>