#include <map>
#include <string>
+// Define an associative container that maps a name with a class and a
+// description. All classes must be derived from a same base class.
+//
+// We can then use the name to create an object of the associated
+// class, and to retrieve a pointer to this object.
+//
+// Furthermore, it is possible to iterate over the elements to get
+// their name and their description.
+
+// I am too lazy to comment the code, which should be obvious...
+
//===== arity 0 =====
template <typename Base>
//===================
+// "NOL" like in Named_Object_List....
#define NOL_INSERT(name, descr, class) insert(name, new creator<class>(descr))
#endif // !NAMED_OBJECT_LIST_H