title: Variable of a template class with a template class template parameter set to a base template of the derived template with the variable
body: <p>I'm attempting to have a derived class (normal template) that has a variable of a template type that has as its template class parameter the type of a base class (normal template, same parameter as the derived class) of the derived class (the one with the variable).  This makes VC++ incredibly angry at me, and I am incapable of calming its fury.  Here's a quick example:</p>
  
  <pre><code>template&lt;template&lt;typename VT&gt; class CT, typename VT&gt; struct encapThing {};
  
  template&lt;typename VT&gt; struct innocuousBase {};
  
  template&lt;typename VT&gt; struct derivOfDoom : public innocuousBase&lt;VT&gt;
  {
      encapThing&lt;innocuousBase, VT&gt; ohgodhelp; //C3200
  };
  </code></pre>
  
  <p>It will throw a C3200, saying it expected a class template.  Now, I can see why this might be thinking there is a recursive loop of templates within templates, even if this isn't <em>actually</em> the case.  How can I convince VC++ otherwise?</p>