Commit 060e7327 by Mark Mitchell Committed by Mark Mitchell

re PR c++/23841 (Floating-point literals cast to integral types should be…

re PR c++/23841 (Floating-point literals cast to integral types should be accepted in integer constant expressions)

	PR c++/23841
	* parser.c (cp_parser_primary_expression): Recognize the closing
	">" of a template-argument-list after a floating-point literal as
	the end of a cast expression.

	PR c++/23841
	* g++.dg/parse/template17.C: New test.

From-SVN: r104208
parent 2eef28ec
2005-09-12 Mark Mitchell <mark@codesourcery.com> 2005-09-12 Mark Mitchell <mark@codesourcery.com>
PR c++/23841
* parser.c (cp_parser_primary_expression): Recognize the closing
">" of a template-argument-list after a floating-point literal as
the end of a cast expression.
2005-09-12 Mark Mitchell <mark@codesourcery.com>
PR c++/23789 PR c++/23789
* cvt.c (perform_qualification_conversions): Don't create * cvt.c (perform_qualification_conversions): Don't create
unnecessary NOP_EXPRs. unnecessary NOP_EXPRs.
......
...@@ -2779,7 +2779,10 @@ cp_parser_primary_expression (cp_parser *parser, ...@@ -2779,7 +2779,10 @@ cp_parser_primary_expression (cp_parser *parser,
/* The end of the cast-expression. */ /* The end of the cast-expression. */
&& next_token->type != CPP_CLOSE_PAREN && next_token->type != CPP_CLOSE_PAREN
/* The end of an array bound. */ /* The end of an array bound. */
&& next_token->type != CPP_CLOSE_SQUARE) && next_token->type != CPP_CLOSE_SQUARE
/* The closing ">" in a template-argument-list. */
&& (next_token->type != CPP_GREATER
|| parser->greater_than_is_operator_p))
cast_p = false; cast_p = false;
} }
......
2005-09-12 Mark Mitchell <mark@codesourcery.com> 2005-09-12 Mark Mitchell <mark@codesourcery.com>
PR c++/23841
* g++.dg/parse/template17.C: New test.
2005-09-12 Mark Mitchell <mark@codesourcery.com>
PR c++/23789 PR c++/23789
* g++.dg/template/nontype14.C: New test. * g++.dg/template/nontype14.C: New test.
// PR c++/23841
template <int I>
struct S
{
int f(int i = I) { return i; }
};
void
g ()
{
S<(int)0.> a2;
}
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