aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2012-04-26 23:32:14 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2012-04-26 23:32:14 +0000
commitdf16e146cf5355d7faeee0812206a0a688643de9 (patch)
treedcf120c2e03b88960b03842a63d33845340766ed
parentfd59643c209efc38aeda606675357ea3f0afe0b8 (diff)
downloadgcc-df16e146cf5355d7faeee0812206a0a688643de9.zip
gcc-df16e146cf5355d7faeee0812206a0a688643de9.tar.gz
gcc-df16e146cf5355d7faeee0812206a0a688643de9.tar.bz2
re PR c++/53096 ([DR 1333] [c++11] should be possible to default a copy ctor that takes non-const arg)
/cp 2012-04-26 Paolo Carlini <paolo.carlini@oracle.com> PR c++/53096 * class.c (check_bases_and_members): Implement core/1333, do not disallow defaulted in the class body non-const ref special members. /testsuite 2012-04-26 Paolo Carlini <paolo.carlini@oracle.com> PR c++/53096 * g++.dg/cpp0x/defaulted35.C: New. * g++.dg/cpp0x/defaulted15.C: Adjust. From-SVN: r186888
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/class.c6
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted15.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted35.C8
5 files changed, 23 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 86e44fc..db8bf72 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2012-04-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/53096
+ * class.c (check_bases_and_members): Implement core/1333, do not
+ disallow defaulted in the class body non-const ref special members.
+
2012-04-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/52363
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 7b6559c..00aeefd 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -1,6 +1,7 @@
/* Functions related to building classes and their related objects.
Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011,
+ 2012
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
@@ -5144,9 +5145,6 @@ check_bases_and_members (tree t)
give the synthesis error. */
error ("%q+D declared to take const reference, but implicit "
"declaration would take non-const", fn);
- else if (imp_const_p && !fn_const_p)
- error ("%q+D declared to take non-const reference cannot be "
- "defaulted in the class body", fn);
}
defaulted_late_check (fn);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c7d000a..576c4aa 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2012-04-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/53096
+ * g++.dg/cpp0x/defaulted35.C: New.
+ * g++.dg/cpp0x/defaulted15.C: Adjust.
+
2012-04-26 Janis Johnson <janisjo@codesourcery.com>
* gcc.dg/bf-ms-layout.c: Adjust offsets to fit ms-bitfield
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted15.C b/gcc/testsuite/g++.dg/cpp0x/defaulted15.C
index 0a47c20..6d182df 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted15.C
@@ -43,7 +43,7 @@ SA(__has_trivial_copy(E));
struct F
{
- F(F&) = default; // { dg-error "non-const" }
+ F(F&) = default;
};
struct G: public F
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted35.C b/gcc/testsuite/g++.dg/cpp0x/defaulted35.C
new file mode 100644
index 0000000..ca700fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted35.C
@@ -0,0 +1,8 @@
+// PR c++/53096
+// { dg-options -std=c++0x }
+
+struct foo
+{
+ foo(foo&) = default;
+ foo& operator=(foo&) = default;
+};