The following invalid code snippet is accepted since at least GCC 2.95.3: ============================ typedef int operator! (); ============================
With such a broken declaration it's easy to crash the compiler afterwards: ============================ struct A {}; typedef int operator! (A); int i = !A(); ============================ bug.cc:3: error: argument dependent lookup finds 'operator!' bug.cc:5: error: in call to 'operator!' bug.cc:5: internal compiler error: tree check: expected function_type or method_type, have error_mark in add_function_candidate, at cp/call.c:1327 Please submit a full bug report, [etc.] -- Summary: operator name accepted in typedef Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code, accepts-invalid, monitored Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29003