diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-10-18 22:22:58 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-10-18 22:22:58 +0000 |
commit | e19f11215d8fa29635b28317dd1cfd1915d048d4 (patch) | |
tree | 9420c48ef18f761ac067e05ecc6e2decb72c8a21 /include | |
parent | 9d9a6128feb6e2251eb3bacdf2d1083a8b2f5b83 (diff) | |
download | external_llvm-e19f11215d8fa29635b28317dd1cfd1915d048d4.zip external_llvm-e19f11215d8fa29635b28317dd1cfd1915d048d4.tar.gz external_llvm-e19f11215d8fa29635b28317dd1cfd1915d048d4.tar.bz2 |
Add move constructors for OwningPtr and OwningArrayPtr.
While LLVM itself is still C++03, there's no reason why tools built on
top of it can't use C++11 features.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166242 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/ADT/OwningPtr.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/llvm/ADT/OwningPtr.h b/include/llvm/ADT/OwningPtr.h index ea9495d..05bcd40 100644 --- a/include/llvm/ADT/OwningPtr.h +++ b/include/llvm/ADT/OwningPtr.h @@ -32,6 +32,15 @@ class OwningPtr { public: explicit OwningPtr(T *P = 0) : Ptr(P) {} +#if LLVM_USE_RVALUE_REFERENCES + OwningPtr(OwningPtr &&Other) : Ptr(Other.take()) {} + + OwningPtr &operator=(OwningPtr &&Other) { + reset(Other.take()); + return *this; + } +#endif + ~OwningPtr() { delete Ptr; } @@ -86,6 +95,15 @@ class OwningArrayPtr { public: explicit OwningArrayPtr(T *P = 0) : Ptr(P) {} +#if LLVM_USE_RVALUE_REFERENCES + OwningArrayPtr(OwningArrayPtr &&Other) : Ptr(Other.take()) {} + + OwningArrayPtr &operator=(OwningArrayPtr &&Other) { + reset(Other.take()); + return *this; + } +#endif + ~OwningArrayPtr() { delete [] Ptr; } |