Due to the global nature of macros, the include guard at the top of stl_tree.h:
#ifndef _TREE_H ... should be renamed to something more specific such as _STL_TREE_H. _TREE_H shouldn't really be defined by anyone, especially the STL library. I noticed this header from someone else who wrote code with a C include guard of the same name which caused a compiler error when using #include <map>. This convention of being as specific as possible for any include guard macro should be pervasive through the entire C++ header collection. -- Summary: poorly named include guard in stl_tree.h Product: gcc Version: 3.4.4 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: carmelo dot piccione at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24720