$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] optional<optional<T>>
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2009-09-02 23:29:03
Joel de Guzman wrote:
> Andrei Alexandrescu wrote:
>> Hello,
>>
>>
>> I'm defining an "optional" type for D's standard library modeled
>> similarly to Boost.optional. An interesting question came up - should
>> optional<optional<T>> fold itself into optional<T>, or is "double
>> optional" an interesting concept of its own?
>>
>> I thought I'd ask here because by now there's a significant body of
>> experience with optional<T>. I perused the online documentation and
>> the forum and couldn't find information about that specific detail.
>
> We use boost.optional extensively in Boost.Spirit. IIRC, we collapse
> such things. Usually they occur in generic code. I see no real need
> for optional<optional<T>>. If there's a use for it, I too would like
> to hear it.
I use double optionals. Indeed, this appears in a generic code, but it's
intended.
The point is that I use the outer optional to in-place construct
objects, and it sometimes happens that the objects themselves are
optionals. Making them not optional would not be correct from the
application logic point of view.