]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/70036 ([concepts] ICE with a dependent sizeof in a concept)
authorJason Merrill <jason@redhat.com>
Wed, 2 Mar 2016 02:55:23 +0000 (21:55 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 2 Mar 2016 02:55:23 +0000 (21:55 -0500)
PR c++/70036

* parser.c (cp_parser_requires_clause): Call
check_for_bare_parameter_packs.

From-SVN: r233886

gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/g++.dg/concepts/variadic3.C [new file with mode: 0644]

index e8be35d1a73671840ddd214656db723fe0db65ca..f1d51cfa481a09e8c52654ce6f218ee2781d5d5b 100644 (file)
@@ -1,5 +1,9 @@
 2016-03-01  Jason Merrill  <jason@redhat.com>
 
+       PR c++/70036
+       * parser.c (cp_parser_requires_clause): Call
+       check_for_bare_parameter_packs.
+
        PR c++/51489
        * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
        the operands.
index 53decdc16170d4fc47f0f4d37d318385ec249dbe..535052f97d017c112ed3866eaac151a29bc2b666 100644 (file)
@@ -24206,6 +24206,8 @@ cp_parser_requires_clause (cp_parser *parser)
   ++processing_template_decl;
   tree expr = cp_parser_binary_expression (parser, false, false,
                                           PREC_NOT_OPERATOR, NULL);
+  if (check_for_bare_parameter_packs (expr))
+    expr = error_mark_node;
   --processing_template_decl;
   return expr;
 }
diff --git a/gcc/testsuite/g++.dg/concepts/variadic3.C b/gcc/testsuite/g++.dg/concepts/variadic3.C
new file mode 100644 (file)
index 0000000..f980e99
--- /dev/null
@@ -0,0 +1,8 @@
+// PR c++/70036
+// { dg-do compile { target c++14 } }
+// { dg-options "-fconcepts" }
+
+template <class T> concept bool C = true;
+
+template <class... T>
+void f(T...) requires C<T>;    // { dg-error "parameter pack" }