boost::intrusive 文档描述了如何将智能指针与侵入式容器一起使用,但随后说您不能使用最有可能使用的智能指针,“它必须具有与原始指针相同的所有权语义。这意味着不能使用资源管理智能指针(如 boost::shared_ptr)。”
为什么是这样?我想不出任何明显的理由应该禁止它们。究竟会破坏什么?侵入式容器无论如何都不管理它们内部项目的分配。就我而言,我想使用 intrusive_ptr,但我看不出为什么 shared_ptr 也不应该工作。
编辑:要清楚,我的意思是钩子指针(例如,侵入式单链表中的下一个指针)是一个智能指针。