re PR c++/69095 (internal compiler error: in dependent_type_p, at cp/pt.c:19399)
authorPaolo Carlini <paolo.carlini@oracle.com>
Mon, 23 May 2016 19:24:22 +0000 (19:24 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 23 May 2016 19:24:22 +0000 (19:24 +0000)
/cp
2016-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/69095
* parser.c (cp_parser_default_argument): Call
check_for_bare_parameter_packs.
(cp_parser_late_parsing_default_args): Likewise.

/testsuite
2016-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/69095
* g++.dg/cpp0x/variadic168.C: New.

From-SVN: r236610

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

index e6f4ac9..764754d 100644 (file)
@@ -1,5 +1,10 @@
 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
 
+       PR c++/69095
+       * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs.
+
+2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
+
        * pt.c (check_for_bare_parameter_packs): Improve error message
        location for expressions.
 
index 076e7f3..a68a510 100644 (file)
@@ -20800,6 +20800,9 @@ cp_parser_initializer (cp_parser* parser, bool* is_direct_init,
       init = error_mark_node;
     }
 
+  if (check_for_bare_parameter_packs (init))
+    init = error_mark_node;
+
   return init;
 }
 
index b4ca509..80b62ad 100644 (file)
@@ -1,5 +1,10 @@
 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
 
+       PR c++/69095
+       * g++.dg/cpp0x/variadic168.C: New.
+
+2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
+
        * g++.dg/cpp0x/pr31445.C: Test column number too.
        * g++.dg/cpp0x/pr32253.C: Likewise.
        * g++.dg/cpp0x/variadic-ex13.C: Likewise.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic168.C b/gcc/testsuite/g++.dg/cpp0x/variadic168.C
new file mode 100644 (file)
index 0000000..202897e
--- /dev/null
@@ -0,0 +1,18 @@
+// PR c++/69095
+// { dg-do compile { target c++11 } }
+
+struct B1 {
+  template <typename Ret, typename... Args, unsigned = sizeof(Args)> // { dg-error "parameter packs not expanded" }
+  void insert(Ret);
+};
+
+struct B2 {
+  template <typename Ret, typename... Args>
+  void insert(Ret, unsigned = sizeof(Args)); // { dg-error "parameter packs not expanded" }
+};
+
+template <typename Ret, typename... Args, unsigned = sizeof(Args)> // { dg-error "parameter packs not expanded" }
+void insert1(Ret);
+
+template <typename Ret, typename... Args>
+void insert2(Ret, unsigned = sizeof(Args)); // { dg-error "parameter packs not expanded" }