Boost logo

Boost :

Subject: Re: [boost] [optional] Why was optional<T>::reset() deprecated?
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2016-03-02 06:22:46


On 2016-03-02 14:21, Beman Dawes wrote:
> On Wed, Mar 2, 2016 at 3:20 AM, Andrey Semashev <andrey.semashev_at_[hidden]>
> wrote:
>
>> On 2016-03-02 01:51, Andrzej Krzemienski wrote:
>>
>>> At some earlier stages of development, boost::optional did not have the
>>> assignment from boost::none_t (and probably also from T); and reset was
>>> the
>>> only way to efficiently change the optional from the state of having the
>>> value to the state of not having the value.
>>>
>>> After the addition of more fancy syntax (conversion to bool, assignment
>>> from none_t), reset() (and is_initialized()) became redundant, and hence
>>> the deprecation.
>>>
>>> I got that from reading Boost mailing archives once.
>>>
>>
>> FWIW, I don't think that having support for 'none' is enough reason to
>> deprecate 'reset' (same for 'is_initialized'). I know some of my colleagues
>> who prefer these methods to the fancy syntax because it feels more aligned
>> with other Boost and standard library components. Having 'reset' also
>> allows not to include boost/none.hpp.
>>
>
> The standards committee's library enhancements working group (LEWG) agrees
> with you. Nevin's question came up in the context of aligning several
> Library Fundamentals TS functions with each other and the rest of the
> standard library. The proposal is progressing and will likely be part of
> C++17.

I'm glad to hear it!


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk