]> granicus.if.org Git - clang/commitdiff
[C++11] Make StoredDeclsList move-only.
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 4 Mar 2014 16:42:46 +0000 (16:42 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 4 Mar 2014 16:42:46 +0000 (16:42 +0000)
It is only moved when a StoredDeclsMap grows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202859 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/DeclContextInternals.h

index 9c626c80aaee1c7edc501f417c49934e18b340fb..f85cea5016b876a5ac7b4f3f5dc322b8e8c3330e 100644 (file)
@@ -46,10 +46,8 @@ struct StoredDeclsList {
 public:
   StoredDeclsList() {}
 
-  StoredDeclsList(const StoredDeclsList &RHS) : Data(RHS.Data) {
-    if (DeclsTy *RHSVec = RHS.getAsVector())
-      Data = DeclsAndHasExternalTy(new DeclsTy(*RHSVec),
-                                   RHS.hasExternalDecls());
+  StoredDeclsList(StoredDeclsList &&RHS) : Data(RHS.Data) {
+    RHS.Data = (NamedDecl *)0;
   }
 
   ~StoredDeclsList() {
@@ -58,12 +56,11 @@ public:
       delete Vector;
   }
 
-  StoredDeclsList &operator=(const StoredDeclsList &RHS) {
+  StoredDeclsList &operator=(StoredDeclsList &&RHS) {
     if (DeclsTy *Vector = getAsVector())
       delete Vector;
     Data = RHS.Data;
-    if (DeclsTy *RHSVec = RHS.getAsVector())
-      Data = DeclsAndHasExternalTy(new DeclsTy(*RHSVec), hasExternalDecls());
+    RHS.Data = (NamedDecl *)0;
     return *this;
   }