Boost logo

Boost :

From: Eric Friedman (ebf_at_[hidden])
Date: 2003-02-17 20:46:04

Fernando Cacciola wrote:
> (3) variant<> dependency.
> We are just about to review boost::variant<>.
> I was planning to wrap optional<> around variant discarding its current
> implementation.

This might seem like a good idea in theory, but for the simple case
presented by optional<>, the baggage of variant's implementation is overkill

It might be useful in the future, however, to build a tests for optional
that compares your boost::optional<T> against a suitably-wrapped
boost::variant<empty, T>.

> However, to support the in-place form and use variant<>, the later will
> to suppport this form itself.
> Proposed solution:
> ...I figured that a factory could move the forwarding problem out of
> optional<>
> while at the same time allow for an almost identical usage.

This seems like a good idea, particularly in terms of integrating
factory-based initialization with variant.

> It allows to use in-place for noncopyable default-constructible objects:
> optional<Z> opt(true,in_place());
> It allows you to have alternative factories which support alternative
> forwarding methods:
> optional<X> opt(false,in_place2(2,"hello"));
> And since the factory can be reused, plugging the mechanism into
> for instance, is trivial.
> Notice that the verbosity is actually put in the in-place factory mainly.
> I would implement and document such factory as another utility and just
> use it on optional<> interface.

Let me know when you get this working for optional<>. I personally would be
quite interested in seeing how it might fit into variant<>. (I won't be
making any changes, however, until after variant's review has ended.)

> P.S: I'd really like to hear others opinions about this,
> specially from Eric Friedman and Itay Maman
> (the variant submitters).

Sorry for the slow reply <g>.


Boost list run by bdawes at, gregod at, cpdaniel at, john at