Something earlier has made "pointer" into a magic word. If you change the name of the class into anything else then the error goes away, and likewise if you compile the file with only the minimal include set that it needs.
-- Summary: Rejects template invocation with valid class Product: gcc Version: 4.0.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: igodard at pacbell dot net http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28311