LINUX.ORG.RU

История изменений

Исправление i-rinat, (текущая версия) :

А в случае этих умных поинтеров нужно какие-то дикие конструкции писать, что-то там с шаблонами колхозить чтобы хоть немного код упростить.

Зачем так уродовать код?

Вот, гляди: пример. В priv, который std::unique_ptr<Impl>, прячутся детали реализации. Инициализируется он через new, доступ к содержимому через ->, но удалением занимается unique_ptr. Эдакий указатель на стероидах.

Забыть удалить или удалить дважды тут не получится. И читателю кода ясно, что такую ошибку можно даже не искать.

В плюсах жизнь и так не сладкая

Так она потому и была не сладкая, что надо было делать работу, которую может делать компилятор.

мозг нужно сломать

Да, мозг придётся сломать.

Исправление i-rinat, :

А в случае этих умных поинтеров нужно какие-то дикие конструкции писать, что-то там с шаблонами колхозить чтобы хоть немного код упростить.

Зачем так уродовать код?

Вот, гляди: пример. В priv, который std::unique_ptr<Impl>, прячутся детали реализации. Инициализируется он через new, доступ к содержимому через ->, но удалением занимается unique_ptr. Эдакий указатель на стероидах.

Забыть удалить или удалить дважды тут не получится. И читателю кода ясно, что такую ошибку можно даже не искать.

В плюсах жизнь и так не сладкая

Так она потому и была не сладкая, что надо было делать работу, которую может делать компилятор.

Исходная версия i-rinat, :

А в случае этих умных поинтеров нужно какие-то дикие конструкции писать, что-то там с шаблонами колхозить чтобы хоть немного код упростить.

Зачем так уродовать код?

Вот, гляди: пример. В priv, который std::unique_ptr<Impl>, прячутся детали реализации. Инициализируется он через new, доступ к содержимому через ->, но удалением занимается unique_ptr. Эдакий указатель на стероидах.

Забыть удалить или удалить дважды тут не получится. И читателю кода ясно, что такую ошибку можно даже не искать.