Essential Tools Module User's Guide : Chapter 6 Collection Classes : Template Overview : Intrusive Lists in Templates
Intrusive Lists in Templates
For a collection class of type-name T, intrusive lists are lists where type T inherits directly from the link type itself. (See Stroustrup, The C++ Programming Language, Second Edition, Addison-Wesley, 1991, for a description of intrusive lists.) The results are optimal in space and time, but require you to honor the inheritance hierarchy. The disadvantage is that the inheritance hierarchy is inflexible, making it slightly more difficult to use with an existing class. For each intrusive list class, the Essential Tools Module offers templatized value lists as alternative non-intrusive linked lists.
Note that when you insert an item into an intrusive list, the actual item, not a copy, is inserted. Because each item carries only one link field, the same item cannot be inserted into more than one list, nor can it be inserted into the same list more than once.