title: Assign derived template class to base class template
body: <p>This seems not possible, but I think it is reasonable to have what I looking for. I have the following code:</p>
  
  <pre><code>template &lt;typename T&gt;
  class Data{
    T getData() {
      return data;
    }
    private:
      T data;
  };
  
  template &lt;typename T&gt;
  class Base : public Data&lt;T&gt; {
    public:
      void someCommonAction() { }
  };
  
  class DerivedInt : public Base&lt;int&gt; {
  };
  
  class DerivedFloat : public Base&lt;float&gt; {
  };
  </code></pre>
  
  <p>I want to assign derived objects to the <code>Base</code> class, but the compiler complains that template argument is required for <code>Base</code>:</p>
  
  <pre><code>Base b = DerivedInt{};
  </code></pre>
  
  <p>I understand that the <code>Base</code> class template itself is not a complete class, but requirements like this is quite reasonable to me. Are there any alternatives to achieve what I want?</p>