When declaring types, type names MUST be suffixed with _type
typedef typename MyTraits<T>::res value_type;
typedef std::map<const Symbol, Entry_T> map_type;
typedef std::list<map_type> symtab_type;
Rationale: this is a common idiom in C++ (which happens to be used by the stl)
Rationale: for not using _t: identifiers ending with
_t are reserved by posix (beside others).