[util.smartptr.weak.const] (original) (raw)

20 General utilities library [utilities]

20.11 Smart pointers [smartptr]

20.11.4 Class template weak_­ptr [util.smartptr.weak]

20.11.4.1 Constructors [util.smartptr.weak.const]

constexpr weak_ptr() noexcept;

Effects:Constructs an empty weak_­ptr object.

Postconditions: use_­count() == 0.

weak_ptr(const weak_ptr& r) noexcept;template<class Y> weak_ptr(const weak_ptr<Y>& r) noexcept;template<class Y> weak_ptr(const shared_ptr<Y>& r) noexcept;

Constraints:For the second and third constructors, Y* is compatible with T*.

Effects:If r is empty, constructs an empty weak_­ptr object; otherwise, constructs a weak_­ptr object that shares ownership with r and stores a copy of the pointer stored in r.

Postconditions: use_­count() == r.use_­count().

weak_ptr(weak_ptr&& r) noexcept;template<class Y> weak_ptr(weak_ptr<Y>&& r) noexcept;

Constraints:For the second constructor, Y* is compatible with T*.

Effects:Move constructs a weak_­ptr instance from r.

Postconditions: *this shall contain the old value of r.

r shall be empty.

r.use_­count() == 0.