Исправление 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. Эдакий указатель на стероидах.
Забыть удалить или удалить дважды тут не получится. И читателю кода ясно, что такую ошибку можно даже не искать.