http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32402
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-10-28 17:21:03 UTC --- (N.B. this now gets the bogus warning from PR 46159) Grammatically: new (pure (*[3])); is a new-expression, with type-id "pure(*[3])" that type-id has type-specifier-seq "pure" and abstract-declarator "(*[3])" that abstract-declarator is a direct-abstract-declarator, with an abstract-declarator of "*[3]" which is a ptr-operator and an abstract-declarator of "[3]" So I think it's syntactically valid