https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16233
--- Comment #9 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- Very likely, we don't even try to parse this as a template function. We should first try to parse it as we do now. When that fails, we should try to reparse it as a template if we have seen <>, if that succeeds, it means the template keyword was missing. Otherwise fail as we do now (we can even reparse it a third time, since we know we will fail). We need to be careful with stuff like v->Foo<2>(), so we cannot simply backtrack if we see a type after <, it could be something like x < int(2.0).