Implementations of C++ STL containers that can contain themselves (for educational purposes)