2572. The remarks for shared_ptr::operator* should apply to cv-qualified void as well

Section: 23.11.3.5 [util.smartptr.shared.obs] Status: C++17 Submitter: Tim Song Opened: 2015-12-13 Last modified: 2017-07-30

Priority: 0

View all other issues in [util.smartptr.shared.obs].

View all issues with C++17 status.

Discussion:

23.11.3.5 [util.smartptr.shared.obs]/4 says for shared_ptr::operator*

Remarks: When T is void, it is unspecified whether this member function is declared. If it is declared, it is unspecified what its return type is, except that the declaration (although not necessarily the definition) of the function shall be well formed.

This remark should also apply when T is cv-qualified void (compare LWG 2500).

[2016-02, Issues Telecon]

P0; move to Tentatively Ready.

Proposed resolution:

This wording is relative to N4567.

  1. Edit 23.11.3.5 [util.smartptr.shared.obs]/4 as indicated:

    T& operator*() const noexcept;
    

    […]

    -4- Remarks: When T is (possibly cv-qualified) void, it is unspecified whether this member function is declared. If it is declared, it is unspecified what its return type is, except that the declaration (although not necessarily the definition) of the function shall be well formed.