llvm-gcc-4.2-2.9/gcc/cp/parser.c
/* A type-specifier (TYPE) has been parsed which cannot be followed by
   "<" in any valid C++ program.  If the next token is indeed "<",
   issue a message warning the user about what appears to be an
   invalid attempt to form a template-id.  */
A type-specifier (TYPE) has been parsed which cannot be followed by
"<" in any valid C++ program.  If the next token is indeed "<",
issue a message warning the user about what appears to be an
invalid attempt to form a template-id.
A type - specifier ( TYPE ) has been parsed which cannot be followed by " < " in any valid C ++ program . If the next token is indeed " < " issue a message warning the user about what appears to be an invalid attempt to form a template - id .
static void
cp_parser_check_for_invalid_template_id (cp_parser* parser,
					 tree type)
{
  cp_token_position start = 0;
  if (cp_lexer_next_token_is (parser->lexer, CPP_LESS))
    {
      if (TYPE_P (type))
	error ("%qT is not a template", type);
      else if (TREE_CODE (type) == IDENTIFIER_NODE)
	error ("%qE is not a template", type);
      else
	error ("invalid template-id");
      if (cp_parser_uncommitted_to_tentative_parse_p (parser))
	start = cp_lexer_token_position (parser->lexer, true);
      cp_lexer_consume_token (parser->lexer);
      cp_parser_enclosed_template_argument_list (parser);
      if (start)
	cp_lexer_purge_tokens_after (parser->lexer, start);
    }
}
static void cp_parser_check_for_invalid_template_id ( cp_parser * parser , tree type ) { cp_token_position start = 0 ; if ( cp_lexer_next_token_is ( parser -> lexer , CPP_LESS ) ) { if ( TYPE_P ( type ) ) error ( " " , type ) ; else if ( TREE_CODE ( type ) == IDENTIFIER_NODE ) error ( " " , type ) ; else error ( " " ) ; if ( cp_parser_uncommitted_to_tentative_parse_p ( parser ) ) start = cp_lexer_token_position ( parser -> lexer , true ) ; cp_lexer_consume_token ( parser -> lexer ) ; cp_parser_enclosed_template_argument_list ( parser ) ; if ( start ) cp_lexer_purge_tokens_after ( parser -> lexer , start ) ; } }
A type-specifier (TYPE) has been parsed which cannot be followed by
"<" in any valid C++ program.
A type - specifier ( TYPE ) has been parsed which cannot be followed by " < " in any valid C ++ program .
/* Remember the location of the invalid "<".  */ /* Consume the "<".  */ /* Parse the template arguments.  */ /* Permanently remove the invalid template arguments so that
	 this error message is not issued again.  */