title: Why is the default constructor deleted in derived class?
body: <pre><code>template&lt;typename T&gt;
  class Foo
  {
      T tVar;
  public:
      Foo(T t) : tVar(t) {}
  };
  
  class FooDerived : public Foo&lt;std::string&gt; {};
  
  int main()
  {
      FooDerived d;
      return 0;
  }
  </code></pre>
  
  <p>This gives:</p>
  
  <blockquote>
    <p>Error (active)    E1790   the default constructor of "FooDerived" cannot be referenced -- it is a deleted function    cpp89   d:\Dokumentumok2\Visual Studio 2017\Projects\cpp89\cpp89\cpp89.cpp  20  </p>
  </blockquote>
  
  <p>It compiles if I add a default constructor to class <code>Foo</code>. Could someone please explain this? This was a question in an interview test. Thank you.</p>