Enable implicitly declared move constructor/operator= (N3053).
commitbde2eab67c0f63e6dcafc495585ee57d7d810adf
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Jun 2010 00:51:44 +0000 (30 00:51 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Jun 2010 00:51:44 +0000 (30 00:51 +0000)
tree232413e607b8465ed633e240d607739a6cbba07c
parent4973dd77b950e66499d7df25595f714609a69f7c
Enable implicitly declared move constructor/operator= (N3053).
gcc/cp/
* class.c (add_implicitly_declared_members): A class with no
explicitly declared copy or move constructor gets both declared
implicitly, and similarly for operator=.
(check_bases): A type with no copy ctor does not inhibit
a const copy ctor in a derived class.
(check_field_decl): Likewise.
(check_bases_and_members): A nonexistent copy ctor/op= is non-trivial.
* tree.c (type_has_nontrivial_copy_init): Adjust semantics.
(trivially_copyable_p): Likewise.
* call.c (convert_like_real): Use type_has_nontrivial_copy_init.
* class.c (finish_struct_bits): Likewise.
* tree.c (build_target_expr_with_type): Likewise.
* typeck2.c (store_init_value): Likewise.
libstdc++-v3/
* include/bits/unordered_map.h: Explicitly default copy constructors.
* include/bits/unordered_set.h: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161582 138bc75d-0d04-0410-961f-82ee72b054a4
36 files changed:
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/class.c
gcc/cp/tree.c
gcc/cp/typeck2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
gcc/testsuite/g++.dg/cpp0x/implicit3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/implicit4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/implicit5.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/not_special.C
gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
gcc/testsuite/g++.dg/cpp0x/rv1n.C
gcc/testsuite/g++.dg/cpp0x/rv1p.C
gcc/testsuite/g++.dg/cpp0x/rv2n.C
gcc/testsuite/g++.dg/cpp0x/rv2p.C
gcc/testsuite/g++.dg/cpp0x/rv3n.C
gcc/testsuite/g++.dg/cpp0x/rv3p.C
gcc/testsuite/g++.dg/cpp0x/rv4n.C
gcc/testsuite/g++.dg/cpp0x/rv4p.C
gcc/testsuite/g++.dg/cpp0x/rv5n.C
gcc/testsuite/g++.dg/cpp0x/rv5p.C
gcc/testsuite/g++.dg/cpp0x/rv6n.C
gcc/testsuite/g++.dg/cpp0x/rv6p.C
gcc/testsuite/g++.dg/cpp0x/rv7n.C
gcc/testsuite/g++.dg/cpp0x/rv7p.C
gcc/testsuite/g++.dg/cpp0x/rv8p.C
gcc/testsuite/g++.dg/gomp/pr26690-1.C
gcc/testsuite/g++.dg/other/error20.C
gcc/testsuite/g++.dg/other/error31.C
gcc/testsuite/g++.dg/parse/error19.C
gcc/testsuite/g++.dg/template/qualttp5.C
gcc/testsuite/g++.old-deja/g++.law/ctors5.C
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/unordered_map.h
libstdc++-v3/include/bits/unordered_set.h