Это пахнет плохим дизайном.
Я не могу придумать разумную ситуацию, когда вы не хотите удалять указатель. Вот (неразумные ИМО) ситуации:
1) объекты статической длительности. Вместо этого рассмотрите возможность использования синглтонного миксина (используйте CRTP для микширования синглтона, у которого есть метод instance (), который возвращает копию локального статического shared_ptr <>; локальная статика является потокобезопасной, поэтому вам также потребуется соответствующий статический мьютекс, если это может вызываться несколькими потоками). Преимущество использования правильного синглтона состоит в том, что ваш синглтон будет разрушен при выходе после других объектов, которые продолжают удерживать shared_ptr <>.
2) объекты, созданные в стеке. Просто не делай этого. Вместо этого создайте объект в куче, защищенной shared_ptr <>. Если вам нужно создать shared_ptr <> для объекта в разных частях кода (то есть вы не можете получить копии из оригинального shared_ptr <>), тогда наследуйте от boost :: enable_shared_from_this <> и получите shared_ptr <> s из shared_from_this ().
Есть ли другая причина, по которой вам нужен shared_ptr <>, который никогда ничего не удаляет?