Commit 3dbbb7af by Jason Merrill Committed by Jason Merrill

parser.c (cp_parser_type_id_1): 'auto' type is ok with a late-specified return type.

	* parser.c (cp_parser_type_id_1): 'auto' type is ok with a
	late-specified return type.

From-SVN: r148306
parent 92b67209
2009-06-08 Jason Merrill <jason@redhat.com>
* parser.c (cp_parser_type_id_1): 'auto' type is ok with a
late-specified return type.
2009-06-08 Jakub Jelinek <jakub@redhat.com>
PR c++/40373
......
......@@ -13848,8 +13848,17 @@ cp_parser_type_id_1 (cp_parser* parser, bool is_template_arg)
if (type_specifier_seq.type
&& type_uses_auto (type_specifier_seq.type))
{
error ("invalid use of %<auto%>");
return error_mark_node;
/* A type-id with type 'auto' is only ok if the abstract declarator
is a function declarator with a late-specified return type. */
if (abstract_declarator
&& abstract_declarator->kind == cdk_function
&& abstract_declarator->u.function.late_return_type)
/* OK */;
else
{
error ("invalid use of %<auto%>");
return error_mark_node;
}
}
return groktypename (&type_specifier_seq, abstract_declarator,
......
2009-06-08 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/auto15.C: New.
2009-06-08 Jan Hubicka <jh@suse.cz>
PR debug/39834
......
// { dg-options "-std=c++0x" }
template< typename Fn > struct function;
template< typename Result, typename ... ArgTypes >
struct function< auto (ArgTypes...)->Result > {
};
int main()
{
function< auto(double)->int > y;
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment