This C++ test case works with gcc 4.1.1. With gcc 4.2 and with mainline it gets an inexplicable error.
typedef void v; typedef v (*pf)(v); foo.cc:2: error: <anonymous> has incomplete type foo.cc:2: error: invalid use of v -- Summary: C++ error on valid code: <anonymous> has incomplete type Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ian at airs dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33101