
2010/10/5 John Reid <j.reid@mail.cryst.bbk.ac.uk>
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. Therefore boost::optional<> colud be specialized for pointers to take advantage of that, and not store a bool besides the pointer in order to save space. I would also like to know, if and why this space optimization is/is not implemented. Regards Kris