Здравствуйте, andyp, Вы писали:
A>Ошибка имхо всё-таки в дизайне auto_ptr. Нечего было его копируемым делать. Всё одно, семантика его копирования левая. Когда копируешь, ожидаешь что
A>A>A a,b;
A>a = b;
A>assert(a==b);
A>
A>Но это ж не про него.
Ну там идея была в том, что так делать нельзя, а предназначен он был для другого -- для декларации передачи владения.
Типа если пишешь что-то вроде
void f( auto_ptr<T> pT )
и это означает, что f захватывает владение указателем...
А если пишешь что-то вроде
auto_ptr<T> g()
это означает, что g возвращает владеющий указатель.
Но я не спорю с тем, что auto_ptr был неким хакком и вообще был весьма убог.
Суть в другом. Нормальные умные указатели были уже очень давно. задолго до STL и auto_ptr...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском