title: std::unique_ptr compiler error: Members of a derived class cannot access private members of a base class
body: <p>I get <a href="http://msdn.microsoft.com/en-us/library/tsbce2bh%28v=vs.110%29" rel="nofollow">Compiler Error C2248</a> when i try to compile the following code:</p>
  
  <pre><code>#include &lt;list&gt;
  #include &lt;memory&gt;
  using namespace std;
  
  
  class data
  {
  public:
  
      static data parse()
      {
          data d;
          data::parse(d);
          return d;
      }
  
      list&lt;std::unique_ptr&lt;data&gt;&gt; l;
  
  private:
  
      static void parse(data&amp; node)
      {       }
  };
  
  
  int main()
  {
  
      return 0;
  }
  </code></pre>
  
  <p>Why? How can i fix this?<br><br>
  Note: I have no problem using <code>std::shared_ptr</code> instead of <code>std::unique_ptr</code>.</p>