The boost::intrusive documentation describes how you can use smart pointers with intrusive containers but then says you can't use the smart pointers you'd be most likely to use, "It must have the same ownership semantics as a raw pointer. This means that resource management smart pointers (like boost::shared_ptr) can't be used."
Why is this? I can't think of any obvious reason they should be prohibited. What exactly would break? Intrusive containers don't manage allocation of the items inside them anyway. In my case I'd like to use intrusive_ptr, but I don't see any reason why shared_ptr shouldn't work either.
Edit: To be clear, I mean for the hook pointer (e.g. the next pointer in an intrusive singly linked list) to be a smart pointer.