diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-05-27 20:46:04 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-05-27 20:46:04 +0000 |
commit | 78eb6e91bd0767ed1eb016c46767823d58295e77 (patch) | |
tree | acdd3ea8a479cd68ff7c4f8983894bc169139199 | |
parent | 144b61968471b8de97b9d08d7575ef742bb9dd0a (diff) | |
download | bcm5719-llvm-78eb6e91bd0767ed1eb016c46767823d58295e77.tar.gz bcm5719-llvm-78eb6e91bd0767ed1eb016c46767823d58295e77.zip |
IntrusiveRefCntPtr: Use the same pattern as the other operator= overloads when using rvalue refs.
llvm-svn: 157546
-rw-r--r-- | llvm/include/llvm/ADT/IntrusiveRefCntPtr.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h b/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h index 947ccc46a52..37018d95e60 100644 --- a/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h +++ b/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h @@ -23,6 +23,7 @@ #include "llvm/Support/Casting.h" #include "llvm/Support/Compiler.h" +#include <memory> namespace llvm { @@ -146,15 +147,13 @@ namespace llvm { #if LLVM_USE_RVALUE_REFERENCES IntrusiveRefCntPtr& operator=(IntrusiveRefCntPtr&& S) { - Obj = S.Obj; - S.Obj = 0; + this_type(std::move(S)).swap(*this); return *this; } template <class X> IntrusiveRefCntPtr& operator=(IntrusiveRefCntPtr<X>&& S) { - Obj = S.getPtr(); - S.Obj = 0; + this_type(std::move(S)).swap(*this); return *this; } #endif |