title: No copy constructor available or copy constructor is declared 'explicit'
body: <p>Could somebody please explain why I'm getting a compile error here - error C2558: class 'std::auto_ptr&lt;_Ty>' : no copy constructor available or copy constructor is declared 'explicit'</p>
  
  <pre><code>#include &lt;memory&gt;
  #include &lt;vector&gt;
  #include &lt;string&gt;
  template&lt;typename T&gt;
  struct test
  {
      typedef std::auto_ptr&lt;T&gt; dataptr;
      typedef std::auto_ptr&lt; test&lt;T&gt; &gt; testptr;
      test( const T&amp; data ):
      data_( new T(data) )
      {
      };
      void add_other( const T&amp; other )
      {
          others_.push_back( testptr( new test(other) ) );
      }
  private:
      dataptr data_;
      std::vector&lt; testptr &gt; others_;
  };
  
  int main(int argc, char* argv[])
  {
      test&lt;std::string&gt; g("d");
  
      //this is the line that causes the error.
      g.add_other("d");
  
      return 0;
  }
  </code></pre>