Hi! On Sun, Oct 28, 2012 at 12:27:40PM +0100, Paolo Carlini wrote: > --- gcc/cp/parser.c (revision 192887) > +++ gcc/cp/parser.c (working copy) > @@ -12655,9 +12655,8 @@ cp_parser_template_id (cp_parser *parser, > /* Otherwise, emit an error about the invalid digraph, but continue > parsing because we got our argument list. In C++11 do not emit > any error, per 2.5/3. */
Shouldn't the "In C++11 do not emit"... sentence be removed from the comment as well? > - if (cxx_dialect < cxx0x > - && permerror (next_token->location, > - "%<<::%> cannot begin a template-argument list")) > + if (permerror (next_token->location, > + "%<<::%> cannot begin a template-argument list")) > { > static bool hint = false; > inform (next_token->location, > --- libcpp/lex.c (revision 192887) > +++ libcpp/lex.c (working copy) > @@ -2291,6 +2291,25 @@ _cpp_lex_direct (cpp_reader *pfile) > if (*buffer->cur == ':') > { > buffer->cur++; > + > + /* C++11 - 2.5 p3, bullet 2. */ > + if (CPP_OPTION (pfile, cplusplus) > + && (CPP_OPTION (pfile, lang) == CLK_CXX11 > + || CPP_OPTION (pfile, lang) == CLK_GNUCXX11)) > + { > + if (*buffer->cur == ':') > + { > + buffer->cur++; > + if (*buffer->cur != ':' && *buffer->cur != '>') > + { > + --buffer->cur; > + --buffer->cur; > + break; > + } > + --buffer->cur; I'd say way too many ++/-- above. I'd write it as: - buffer->cur++; + + /* C++11 - 2.5 p3, bullet 2. */ + if (CPP_OPTION (pfile, cplusplus) + && (CPP_OPTION (pfile, lang) == CLK_CXX11 + || CPP_OPTION (pfile, lang) == CLK_GNUCXX11) + && buffer->cur[1] == ':' + && buffer->cur[2] != ':' && buffer->cur[2] != '>') + break; + + buffer->cur++; Jakub