]> granicus.if.org Git - clang/commitdiff
-Wdeprecated: SavedInstanceContext is returned by value but isn't really copyable...
authorDavid Blaikie <dblaikie@gmail.com>
Wed, 12 Aug 2015 22:58:10 +0000 (22:58 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Wed, 12 Aug 2015 22:58:10 +0000 (22:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244826 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaAccess.cpp

index 7c1755dbe79bb9e964b03abfc2dca99423b7c830..e9772bc520494cbeda1bfc9c460b4bfb8e5e65d5 100644 (file)
@@ -182,15 +182,20 @@ struct AccessTarget : public AccessedEntity {
 
   class SavedInstanceContext {
   public:
+    SavedInstanceContext(SavedInstanceContext &&S)
+        : Target(S.Target), Has(S.Has) {
+      S.Target = nullptr;
+    }
     ~SavedInstanceContext() {
-      Target.HasInstanceContext = Has;
+      if (Target)
+        Target->HasInstanceContext = Has;
     }
 
   private:
     friend struct AccessTarget;
     explicit SavedInstanceContext(AccessTarget &Target)
-      : Target(Target), Has(Target.HasInstanceContext) {}
-    AccessTarget &Target;
+        : Target(&Target), Has(Target.HasInstanceContext) {}
+    AccessTarget *Target;
     bool Has;
   };