https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67784
--- Comment #1 from Jacques-Henri Jourdan <jacques-henri.jourdan at inria dot Fr> --- My explanation of the problem is that the parser has to do a lookahead to make sure that there is no "else" associated to the selection statement. However, this lookahead is done in the wrong context, which make T look like a variable (while it is actually a type name).