| Index: base/scoped_generic.h
|
| diff --git a/base/scoped_generic.h b/base/scoped_generic.h
|
| index da42609e5c484cefc5024f9968f836ea0292eecc..f6807e2b58f2fa3fe425b5e9b0e51a4725b5d963 100644
|
| --- a/base/scoped_generic.h
|
| +++ b/base/scoped_generic.h
|
| @@ -53,7 +53,7 @@ namespace base {
|
| // typedef ScopedGeneric<int, FooScopedTraits> ScopedFoo;
|
| template<typename T, typename Traits>
|
| class ScopedGeneric {
|
| - MOVE_ONLY_TYPE_FOR_CPP_03(ScopedGeneric, RValue)
|
| + MOVE_ONLY_TYPE_WITH_MOVE_CONSTRUCTOR_FOR_CPP_03(ScopedGeneric)
|
|
|
| private:
|
| // This must be first since it's used inline below.
|
| @@ -83,15 +83,21 @@ class ScopedGeneric {
|
| : data_(value, traits) {
|
| }
|
|
|
| - // Move constructor for C++03 move emulation.
|
| - ScopedGeneric(RValue rvalue)
|
| - : data_(rvalue.object->release(), rvalue.object->get_traits()) {
|
| + // Move constructor. Allows initialization from a ScopedGeneric rvalue.
|
| + ScopedGeneric(ScopedGeneric<T, Traits>&& rvalue)
|
| + : data_(rvalue.release(), rvalue.get_traits()) {
|
| }
|
|
|
| ~ScopedGeneric() {
|
| FreeIfNecessary();
|
| }
|
|
|
| + // operator=. Allows assignment from a ScopedGeneric rvalue.
|
| + ScopedGeneric& operator=(ScopedGeneric<T, Traits>&& rvalue) {
|
| + reset(rvalue.release());
|
| + return *this;
|
| + }
|
| +
|
| // Frees the currently owned object, if any. Then takes ownership of a new
|
| // object, if given. Self-resets are not allowd as on scoped_ptr. See
|
| // http://crbug.com/162971
|
|
|