re PR c++/48280 ([C++0x] ICE: tree check: expected var_decl or function_decl, have...
authorJason Merrill <jason@redhat.com>
Thu, 31 Mar 2011 20:29:49 +0000 (16:29 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 31 Mar 2011 20:29:49 +0000 (16:29 -0400)
PR c++/48280
* method.c (defaultable_fn_check): Templates are not defaultable.

From-SVN: r171797

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

index c2f983103976704956bfbc46fc2f5ef7e9dd4f98..dce49e948d4151b9195c99d1d9656815129d105a 100644 (file)
@@ -1,5 +1,8 @@
 2011-03-31  Jason Merrill  <jason@redhat.com>
 
+       PR c++/48280
+       * method.c (defaultable_fn_check): Templates are not defaultable.
+
        * parser.c (cp_parser_init_declarator): Avoid redundant
        cp_finish_decl for member declarations.
 
index 386a818ed1ba79346ced4062809e7949d4231f1c..b741516d195d7e1a5ea908e60ac01d6985a06329 100644 (file)
@@ -1588,6 +1588,12 @@ defaultable_fn_check (tree fn)
 {
   special_function_kind kind = sfk_none;
 
+  if (template_parm_scope_p ())
+    {
+      error ("a template cannot be defaulted");
+      return false;
+    }
+
   if (DECL_CONSTRUCTOR_P (fn))
     {
       if (FUNCTION_FIRST_USER_PARMTYPE (fn) == void_list_node)
index b34ea854e0f739de6197415c429bd1588ae8f08c..81f9bb2ed9252b9aa18b6da24c5a94936e5b99d3 100644 (file)
@@ -1,3 +1,7 @@
+2011-03-31  Jason Merrill  <jason@redhat.com>
+
+       * g++.dg/cpp0x/defaulted24.C: New.
+
 2011-03-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        PR target/16292
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted24.C b/gcc/testsuite/g++.dg/cpp0x/defaulted24.C
new file mode 100644 (file)
index 0000000..307bf94
--- /dev/null
@@ -0,0 +1,6 @@
+// PR c++/48280
+// { dg-options -std=c++0x }
+
+struct S {
+  template < typename > S (const S &) = default; // { dg-error "" }
+};