Commit 02060927 by Dodji Seketeli Committed by Dodji Seketeli

re PR c++/39637 (ICE on ill-formed sizeof(<parameter-pack>) in variadic template)

gcc/cp/ChangeLog:
2009-04-08  Dodji Seketeli  <dodji@redhat.com>
    PR c++/39637
    * parser.c (cp_parser_enumerator_definition): Make sure the
    initializer of the enumerator doesn't contain any bare parameter pack.

gcc/testsuite/ChangeLog
2009-04-08  Dodji Seketeli  <dodji@redhat.com>
    PR c++/39637
    * g++.dg/cpp0x/variadic-crash2.C: New test.

From-SVN: r145717
parent bafc96b4
2009-04-08 Dodji Seketeli <dodji@redhat.com>
PR c++/39637
* parser.c (cp_parser_enumerator_definition): Make sure the
initializer of the enumerator doesn't contain any bare parameter pack.
2009-04-07 Jason Merrill <jason@redhat.com>
PR c++/34691
......
......@@ -12011,6 +12011,11 @@ cp_parser_enumerator_definition (cp_parser* parser, tree type)
else
value = NULL_TREE;
/* If we are processing a template, make sure the initializer of the
enumerator doesn't contain any bare template parameter pack. */
if (check_for_bare_parameter_packs (value))
value = error_mark_node;
/* Create the enumerator. */
build_enumerator (identifier, value, type);
}
......
2009-04-08 Dodji Seketeli <dodji@redhat.com>
PRc++/39637
* g++.dg/cpp0x/variadic-crash2.C: New test.
2009-04-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38863
......
// Contributed by Dodji Seketeli <dodji@redhat.com>
// Origin: PR c++/39637
// { dg-options "-std=gnu++0x" }
// { dg-do "compile" }
template<class... Types>
void
f(Types...)
{
enum {e = sizeof(Types)}; // { dg-error "parameter packs not expanded with '...'" }
enum {e1 = sizeof...(Types)};
}
int
main()
{
f(0);
}
// { dg-message "note" "Types" { target *-*-* } 10 }
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