title: error C3203: 'OMSSPDisk' : unspecialized class template can't be used as a template argument for template parameter '_Kty', expected a real type
body: <p>I'm using set with templates in c++:</p>
  
  <pre><code>template&lt;typename TKey,typename TValue&gt;
  class OMSSVDisk : public OMSSObjProperties&lt;TKey,TValue&gt;{
      set&lt;OMSSPDisk&gt; memberPDs;
  };
  </code></pre>
  
  <p>This is giving error as mentioned in title at third line (set...) in above code.</p>
  
  <p>OMSSObjProperties is as follows:</p>
  
  <pre><code>template&lt;typename TKey,typename TValue&gt;
  class OMSSObjProperties{
      string objTypeName;
      string objTypeID;
      string objID;
      map&lt;TKey,TValue&gt; objProperties;
  public:
      string getObjTypeName();// returns objTypeName
      string getObjTypeID();// returns objTypeID
      string getObjID();// returns objID
  
      void setObjTypeName(const char*);// sets objTypeName
      void setObjTypeID(const char*);// sets objTypeID
      void setObjID(const char*);// sets objID
  
      map&lt;TKey,TValue&gt; getObjProperties();
      TValue getObjPropertyValue(TKey Key);
      void setObjProperty(TKey key,TValue Value);
      string removeProperty(TKey Key);
  };
  </code></pre>
  
  <p>and OMSSPDisk is a class as follows:</p>
  
  <pre><code>template&lt;typename TKey,typename TValue&gt;
  class OMSSPDisk : public OMSSObjProperties&lt;TKey,TValue&gt;{
  };
  </code></pre>
  
  <p>So question here is, can we use class name as template argument?
  Please help me to sort out the error.
  Thanks.</p>