If a class is declared with an inner enum with a value, say foo, and also with an inner template class that takes a non-type parameter named foo then inside methods in the inner class the value of foo is the value of the enum value and not the template parameter.
This seems odd and comeau does it the other way. -- Summary: Enums are stronger than templates Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: gcc at magfr dot user dot lysator dot liu dot se GCC host triplet: i686-redhat-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45747