blob: 4306a385de4ad0e8a8b1125b2e73883ceb43886a [file]
.. _module-pw_containers-multiple_containers:
------------------------------------
Using items with multiple containers
------------------------------------
Several of Pigweed's containers feature instrusive items, where the data needed
to track where an item is in a container is stored in the item itself. Intrusive
items may be used with multiple containers, provided each of those containers is
templated on a type that is not derived from any of the others. This can be
achieved using multiple inheritance from distinct types:
.. literalinclude:: examples/multiple_containers.cc
:language: cpp
:linenos:
:start-after: [pw_containers-multiple_containers]
:end-before: [pw_containers-multiple_containers]
If one or more types is derived from another, the compiler will fail to build
with an error that ``ItemType`` is ambiguous or found in multiple base classes.