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
This commit is contained in:
Paolo Carlini 2012-04-26 23:32:14 +00:00 committed by Paolo Carlini
parent fd59643c20
commit df16e146cf
5 changed files with 23 additions and 5 deletions

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,8 @@
// PR c++/53096
// { dg-options -std=c++0x }
struct foo
{
foo(foo&) = default;
foo& operator=(foo&) = default;
};