Boost logo

Boost :

Subject: Re: [boost] [optional] memory use for optional refs and ptrs
From: Sebastian Redl (sebastian.redl_at_[hidden])
Date: 2010-10-05 10:11:34


On 05.10.2010 15:54, Krzysztof Czainski wrote:
> 2010/10/5 John Reid<j.reid_at_[hidden]>
>
>
>> Rutger ter Borg wrote:
>>
>>
>>> Hello,
>>>
>>> I'm looking into boost::optional<> as a replacement for some of my code
>>> which has to deal with optional values. However, it seems that cases which
>>> are usually space-efficient optionals (e.g., ptrs in the form of a null-ptr)
>>> do not have template specializations. In other words, boost optional
>>> templates store a bool and the memory footprint of its template parameter,
>>> regardless of type. I.e., optional references and pointers take their space
>>> plus the space of an extra bool.
>>>
>>> Is there a reason for this?
>>>
>>> Might someone want to store a null pointer in the optional? I'm not sure
>>>
>> about the references though.
>>
>> John.
>>
> I understand, that a null pointer means the same as lack of a pointer.
>
In your use case.

The idea has been discussed on the list before, and IIRC, the conclusion
was that the library simply cannot rely on the user not wanting to have
a null pointer in an optional.
I could see a trait for optional specifying if a type has a natural
empty value, and if so, which.

Sebastian


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