Я хотел бы сохранить конструктор копирования по умолчанию для класса с большим числом элементов (но, скажем, не особо сложного *), но в идеале хотел бы заменить некоторый элемент необработанного указателя альтернативой интеллектуального указателя.
unique_ptr, кажется, по умолчанию для этого, но он неявно удаляет конструктор копирования для моего класса.
shared_ptr вместо этого позволит мне сохранить конструктор копирования класса.Может ли это быть хорошей причиной просто придерживаться shared_ptr, даже если я действительно не хочу «делиться» ресурсом;Я действительно хочу сохранить только доступный конструктор копирования (раздражает написание ручного конструктора копирования для всего класса, просто заменить указатель на unique_ptr), так же, как это было у меня, когда я все еще использовал необработанный указатель.
В поисках того, когда использовать shared_ptr против unique_ptr, я никогда не вижу простого сохранения конструктора копирования, указанного в качестве возможной ключевой причины для использования shared_ptr (возможное исключение https://stackoverflow.com/a/16030118/3673329, но без указания каких-либо подробностей), но ятакже напрямую не вижу причин, по которым это не может быть правильным выбором.
Я считаю, что shared_ptr может быть немного более ресурсоемким, но, допустим, мой случай, когда это не является реальной проблемой.
* В частности, копирование класса по умолчанию / мелкое копирование было вполне подходящим для моих целей, пока я использовал неструктурированные члены-указатели вместо умных.