Chromium Code Reviews| Index: base/memory/ptr_util.h |
| diff --git a/base/memory/ptr_util.h b/base/memory/ptr_util.h |
| index 04f2c0258929e74c0bcca89d4433fa6f647a0d28..fb0c12e9606c9b64e50a1b81a2e1677dc324ebcb 100644 |
| --- a/base/memory/ptr_util.h |
| +++ b/base/memory/ptr_util.h |
| @@ -7,6 +7,31 @@ |
| #include <memory> |
| +// A function to convert T* into scoped_ptr<T> |
| +// Doing e.g. make_scoped_ptr(new FooBarBaz<type>(arg)) is a shorter notation |
| +// for scoped_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg)) |
|
danakj
2016/03/29 18:58:53
drop the extra space in > >
dcheng
2016/03/29 19:00:55
Done.
|
| +// |
| +// Why doesn't this just return a scoped_ptr? |
| +// |
| +// make_scoped_ptr is currently being migrated out of scoped_ptr.h, so we can |
| +// globally rename make_scoped_ptr to WrapUnique without breaking the build. |
| +// Doing so without breaking intermediate builds involves several steps: |
| +// |
| +// 1. Move make_scoped_ptr into ptr_util.h and include ptr_util.h from |
| +// scoped_ptr.h. |
| +// 2. Add an #include for ptr_util.h to every file that references |
| +// make_scoped_ptr. |
| +// 3. Remove ptr_util.h include from scoped_ptr.h. |
| +// 4. Global rewrite everything. |
| +// |
| +// Unfortunately, step 1 introduces an awkward cycle of dependencies between |
| +// ptr_util.h and scoped_ptr.h To break that cycle, we exploit the fact that |
| +// scoped_ptr is really just a type alias for std::unique_ptr. |
| +template <typename T> |
| +std::unique_ptr<T> make_scoped_ptr(T* ptr) { |
| + return std::unique_ptr<T>(ptr); |
| +} |
| + |
| namespace base { |
| // Helper to transfer ownership of a raw pointer to a std::unique_ptr<T>. |