Как правило, std::auto_ptr
не может использоваться таким образом.
others_.push_back( testptr( new test(other) ) );
Требуется, чтобы существовал конструктор копирования, который принимает const&
, и не существует такого конструктора для std::auto_ptr
. Это широко рассматривается как хорошая вещь , поскольку вы никогда не должны использовать std::auto_ptr
в контейнере! Если вы не понимаете, почему это так, тогда прочитайте эту статью Хербом Саттер , в частности, раздел, озаглавленный «Чего не следует делать и почему не следует делать» примерно на 3/4 пути.