Denoting un-special-ness with observer_ptr<T>
We've now seen two or three different smart pointer types (depending on whether you count weak_ptr
as a pointer type in its own right, or more like a ticket for a shared_ptr
). Each of these types carries with it some useful source-level information about lifetime management. For example, just from the function signatures of these two C++ functions, what can we say about their semantics?
void remusnoc(std::unique_ptr<Widget> p); std::unique_ptr<Widget> recudorp();
We see that remusnoc
takes a unique_ptr
by value, which means that ownership of the controlled object is transferred to remusnoc
. When we call this function, we must have unique ownership of a Widget
, and after we call this function, we will no longer be able to access that Widget
. We don't know whether remusnoc
is going to destroy the Widget
, keep it around, or attach it to some other object or thread; but it's explicitly no longer our concern. The remusnoc
...