cpp/experimental/observer ptr

is a non-owning pointer, or observer. The observer stores a pointer to a second object, known as the watched object. An may also have no watched object.

An observer is not responsible in any way for the watched object; there is no inherent relationship between an observer and the object it watches.

It is intended as a near drop-in replacement for raw pointer types, with the advantage that, as a vocabulary type, it indicates its intended use without need for detailed analysis by code readers.

Specializations of satisfy the requirements of  and.