title: Specialization doesn't contain data that's declared in the primary template
body: <pre><code>class Base {
  public:
      virtual void load() = 0;
  };
  
  template&lt;typename T&gt;
  class CustomConfig : public Base {
  public:
      const T&amp; getData() { return data; }
      T data;
  };
  
  template&lt;&gt;
  class CustomConfig&lt;std::set&lt;uint32_t&gt;&gt; {
  public:
      virtual void load() {
          this-&gt;data = {4, 5, 6};
      }
  };
  </code></pre>
  <p>I don't know why I got the error:</p>
  <pre><code>class CustomConfig&lt;std::set&lt;unsigned int&gt; &gt;' has no member named 'data'
  </code></pre>
  <p><strong>REAL CASE</strong></p>
  <p>In fact, I got such an issue: I need a virtual function, but it's return type is not unique, it may be a <code>std::set</code>, a <code>std::vector</code>, <code>std::list</code> or some other types. Then I was thinking the template technique might help. That's why I defined the class <code>template&lt;typename T&gt; class CustomConfig</code>.</p>
  <p>I hope this was not a serious XY problem... Obviously I misunderstood how template class works.</p>