/**
\defgroup fcpptintrusive fcppt.intrusive
\ingroup fcpptmain
\brief Intrusive list implementation.

\section fcpptintrusive_lists Intrusive lists

An intrusive list is a list that does not actually own elements.
Instead, when an element is constructed it gets the list it is going
to be part of as a parameter. As long as the element is alive, it is part of the list.
Such a list can be used to track elements whose lifetime is managed elsewhere.
For example, \ref fcpptsignal uses this technique to know which functions it has to call.

A type <code>T</code> can be inserted into
an <code>fcppt::intrusive::list<T></code> if it derives from <code>fcppt::intrusive::base<T></code>.
The implementation of #fcppt::intrusive::base owns a pair of pointers that represent
a list node. When such an object is destroyed or moved from, it automatically unlinks itself
from the list.

Here is an example: First, we declare the list type we are going to use:

\snippet intrusive.cpp intrusive_fwd

Then, we define the <code>element</code> type, deriving from the base class
and adding a constructor that takes a list as an argument:

\snippet intrusive.cpp intrusive_element

Here is a small example of how a list can be used:

\snippet intrusive.cpp intrusive_test
*/
