In two weeks, I plan to land this CL, which replaces the rtc::scoped_ptr class with a type alias to std::unique_ptr. At that point, the following features of scoped_ptr will stop working (since unique_ptr doesn’t have them):
operator== that accepts one unique_ptr<T> and one T*. (Use .get() and compare two T* instead.)
Implicit conversion to bool. There is still explicit conversion, though:
bool b = x; // doesn't work anymore
bool b = !x; // works
if (x) { // also works
The .accept() and .use() member functions. (These are often used with functions that pass ownership of objects via raw pointer output parameters. The preferred way to deal with this is to change those functions to not pass ownership in raw pointers.)
The rtc_make_scoped_ptr function.
(There might be more, but these were the only issues I found when doing this cleanup in the WebRTC tree. For details on exactly what features will remain, consult the docs for std::unique_ptr.)
Two weeks after that, the plan is that I’ll land a CL that removes the rtc::scoped_ptr type alias, and the entire webrtc/base/scoped_ptr.h file. This means that users of the WebRTC native API need to do the following:
Between now and now + 2 weeks, stop using the scoped_ptr features not supported by unique_ptr.
Between now + 2 weeks and now + 4 weeks, replace “rtc::scoped_ptr” with “std::unique_ptr” everywhere, and stop #including webrtc/base/scoped_ptr.h.
I’ll post notices to this thread when each of these two CLs land. For a more detailed progress report, follow the bug.