Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3299)

Unified Diff: base/memory/scoped_ptr.h

Issue 11078014: Fix move.h's to use a concrete RValue carrier object rather than hacking a RValue&. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix error. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/memory/scoped_vector.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/memory/scoped_ptr.h
diff --git a/base/memory/scoped_ptr.h b/base/memory/scoped_ptr.h
index 09981d88533ee3cac495829c966b101891950f5b..3547b7a15397f9c58f3c5193401d6d9defae333d 100644
--- a/base/memory/scoped_ptr.h
+++ b/base/memory/scoped_ptr.h
@@ -54,7 +54,7 @@
// }
//
// {
-// scoped_ptr<Foo> ptr(new Foo("yay")); // ptr manages Foo("yay)"
+// scoped_ptr<Foo> ptr(new Foo("yay")); // ptr manages Foo("yay").
// TakesOwnership(ptr.Pass()); // ptr no longer owns Foo("yay").
// scoped_ptr<Foo> ptr2 = CreateFoo(); // ptr2 owns the return Foo.
// scoped_ptr<Foo> ptr3 = // ptr3 now owns what was in ptr2.
@@ -152,11 +152,8 @@ class scoped_ptr {
scoped_ptr(scoped_ptr<U> other) : ptr_(other.release()) { }
// Constructor. Move constructor for C++03 move emulation of this type.
- scoped_ptr(RValue& other)
- // The type of the underlying object is scoped_ptr; we have to
- // reinterpret_cast back to the original type for the call to release to
- // be valid. (See C++11 5.2.10.7)
- : ptr_(reinterpret_cast<scoped_ptr&>(other).release()) {
+ scoped_ptr(RValue rvalue)
+ : ptr_(rvalue.object->release()) {
}
// Destructor. If there is a C object, delete it.
@@ -175,8 +172,8 @@ class scoped_ptr {
}
// operator=. Move operator= for C++03 move emulation of this type.
- scoped_ptr& operator=(RValue& rhs) {
- swap(rhs);
+ scoped_ptr& operator=(RValue rhs) {
+ swap(*rhs->object);
return *this;
}
@@ -288,11 +285,8 @@ class scoped_array {
explicit scoped_array(C* p = NULL) : array_(p) { }
// Constructor. Move constructor for C++03 move emulation of this type.
- scoped_array(RValue& other)
- // The type of the underlying object is scoped_array; we have to
- // reinterpret_cast back to the original type for the call to release to
- // be valid. (See C++11 5.2.10.7)
- : array_(reinterpret_cast<scoped_array&>(other).release()) {
+ scoped_array(RValue rvalue)
+ : array_(rvalue.object->release()) {
}
// Destructor. If there is a C object, delete it.
@@ -303,8 +297,8 @@ class scoped_array {
}
// operator=. Move operator= for C++03 move emulation of this type.
- scoped_array& operator=(RValue& rhs) {
- swap(rhs);
+ scoped_array& operator=(RValue rhs) {
+ swap(*rhs.object);
return *this;
}
@@ -415,11 +409,8 @@ class scoped_ptr_malloc {
explicit scoped_ptr_malloc(C* p = NULL): ptr_(p) {}
// Constructor. Move constructor for C++03 move emulation of this type.
- scoped_ptr_malloc(RValue& other)
- // The type of the underlying object is scoped_ptr_malloc; we have to
- // reinterpret_cast back to the original type for the call to release to
- // be valid. (See C++11 5.2.10.7)
- : ptr_(reinterpret_cast<scoped_ptr_malloc&>(other).release()) {
+ scoped_ptr_malloc(RValue rvalue)
+ : ptr_(rvalue.object->release()) {
}
// Destructor. If there is a C object, call the Free functor.
@@ -428,8 +419,8 @@ class scoped_ptr_malloc {
}
// operator=. Move operator= for C++03 move emulation of this type.
- scoped_ptr_malloc& operator=(RValue& rhs) {
- swap(rhs);
+ scoped_ptr_malloc& operator=(RValue rhs) {
+ swap(*rhs.object);
return *this;
}
« no previous file with comments | « no previous file | base/memory/scoped_vector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698