]> granicus.if.org Git - clang/commit
Implement final resolution of DR1402: implicitly-declared move operators that
authorRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 4 Nov 2013 01:48:18 +0000 (01:48 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 4 Nov 2013 01:48:18 +0000 (01:48 +0000)
commit743cbb91499e138a63a398c6515667905f1b3be8
tree970361bd02914fab8bf39471e835a6a319f70cef
parent62e9370d9da9ee4f675da52d559a79c93c30642e
Implement final resolution of DR1402: implicitly-declared move operators that
would be deleted are still declared, but are ignored by overload resolution.

Also, don't delete such members if a subobject has no corresponding move
operation and a non-trivial copy. This causes us to implicitly declare move
operations in more cases, but risks move-assigning virtual bases multiple
times in some circumstances (a warning for that is to follow).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193969 91177308-0d34-0410-b5e6-96231b3b80d8
13 files changed:
include/clang/AST/DeclCXX.h
lib/AST/ASTImporter.cpp
lib/AST/DeclCXX.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaOverload.cpp
lib/Serialization/ASTReaderDecl.cpp
lib/Serialization/ASTWriter.cpp
test/CXX/class.derived/class.abstract/p16.cpp
test/CXX/drs/dr1xx.cpp
test/CXX/special/class.copy/implicit-move.cpp
test/CXX/special/class.copy/p12-0x.cpp
test/CXX/special/class.copy/p23-cxx11.cpp