"Peter Dimov" <[EMAIL PROTECTED]> wrote in message
00d901c2d820$bd2225c0$1d00a8c0@pdimov2">news:00d901c2d820$bd2225c0$1d00a8c0@pdimov2...
> David Abrahams wrote:
> > "Peter Dimov" <[EMAIL PROTECTED]> writes:
> >
> >> Joel de Guzman wrote:
> >>> David Abrahams wrote:
> >>>
> >>>> BTW, I just realized that a conversion from variant<T> to
> >>>> optional<T> could be used to do extraction as well.  Maybe it
>
> -------------^
>
> >>>> would be better to ditch extract altogether and just use optional?
> >>>
> >>> I think this makes sense. The disadvantage is the overhead of
> >>> optional just to do "extract"ion.
> >>
> >> That means an extra copy
> >
> > Really? You can't convert to an optional<T&>?
>
> You said "optional<T>" above.
>
> It may be possible to use optional<T&> (is it supported?)

No, it isn't.
And I don't think it ever will.
optional<X> intends to represent a value of type X wich is possiblly
uninitialized.
But you can't have X=T& since you can't have an uninitialized reference.

Of course, optional<T&> could have a special meaning, but I can't see what
would it be.
What's the meaning of an optional reference? I think there cannot be such a
thing.


> or optional<
> reference_wrapper<T> > but this looks like an "obfuscated C++" entry to me
> compared to T*. What's wrong with it? What does optional<T&> add?
>
Exactly. An optional reference is almost like a possibly null pointer,
except that references
must be bounded.
If given a particular design you would need optional<T&>, then you
definitely need T* instead.


--
Fernando Cacciola




_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to