Ненавязчивый - это когда объект интеллектуального указателя обеспечивает подсчет ссылок.
Пример: std::shared_ptr
, boost::shared_ptr
Нарушение - это когда интеллектуальный указатель полагается на встроенный счетчик ссылок на хранимые объекты (т.е. хранящийся объект отвечает за счет ссылок).
Пример: boost::intrusive_ptr
Примечание: для навязчивого указателя требуется код "склеивания" для увеличения и уменьшения счетчика ссылок внутри хранимого объекта. В расширенной библиотеке вы должны предоставить 2 функции объекту intrusive_ptr
для выполнения увеличения и уменьшения счетчика ссылок.
умные указатели (повышение) объяснил
Здесь нет прямого ответа на мой вопрос, но он очень полезен как краткий обзор семантики умных указателей.