C++ Logo

std-proposals

Advanced search

Re: Yet another member function for std::map

From: Andrey Semashev <andrey.semashev_at_[hidden]>
Date: Mon, 2 Aug 2021 13:26:10 +0300
On 8/2/21 12:28 PM, Lénárd Szolnoki via Std-Proposals wrote:
>
> The Achilles' heel of optional<T&> seems to be assignment. I'm of the
> opinion that it simply shouldn't have assignment from arguments of type
> T, but I believe there is no perfect answer.

Personally, I have no problem with rebinding semantics of
optional<T&>::operator=(T&). That it would affect the referred object
makes no sense because (a) there may not be such an object (if the
optional is empty) and (b) no other version of optional<T> acts this
way. In order to access the referred object one has to use operator* or
operator-> or similar accessors, and assignment is no exception.

Having the assignment is important to be able to initialize an empty
optional. Yes, you could assign from a temporary optional, but that is
unnecessarily verbose, IMHO. In any case, this is not the reason to not
have optional<T&> at all.

Received on 2021-08-02 05:26:16