Re[10]: func(int&&) vs std::move
От: andyp  
Дата: 20.11.18 20:09
Оценка: +1
Здравствуйте, Masterspline, Вы писали:

M>Ты же в курсе, что семантику auto_ptr давно исправили, а сам auto_ptr объявили устаревшим.


Понятно, что старье обсуждается. Просто имхо ошибки проектирования auto_ptr сильно повлияли на осознание нужности семантики перемещения.
Re[15]: func(int&&) vs std::move
От: Erop Россия  
Дата: 20.11.18 20:45
Оценка:
Здравствуйте, 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...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.