object is referenced by another API. The only alternative to Boost.Intrusive is keeping a pointer to the object in a separate container, which is way too cumbersome. Second is when you want your object to be a member of multiple containers and you don't want or cannot copy it.
Storing a vector of pointers is not only less cumbersome than injecting structures into the original objects, it's less expensive. According to the Doom3 BFG technical note (fabiensanglard.net/doom3_documentation/DOOM-3-BFG-Technical-Note.pdf) a vector of indexes to a separate vector(s) of objects is significantly faster than an intrusive list. The same would be true for a vector of pointers (but less so). This approach is also amenable to multiple containers sharing objects. M