|
Boost : |
From: Anthony Williams (anthony_w.geo_at_[hidden])
Date: 2005-10-19 06:28:52
"Fernando Cacciola" <fernando_cacciola_at_[hidden]> writes:
> // (2) Anthony's proposal:
> o.reset(rb); // still some room for doubts?
How about
o.replace_with(rb);
does that suggest rebinding? I was imagining that reset (or replace_with)
would always rebind/replace the contained element, rather than assign to
it. Then it would also work with my non-assignable types.
> // (3) Sam's proposal:
> o = make_optional(rb); // Clearly rebinds, doesn't it?
I could run with this.
As for Mat's concerns about using optionals in place of normal values:
* if the conversion constructor is not explicit, then that allows constructing
an optional<T> from a T
* we could provide a means of capturing a value into an optional:
std::pair<Foo, Bar> do_stuff();
boost::optional<Foo> foo;
boost::optional<Bar> bar;
tie(rebinder(foo),rebinder(bar))=do_stuff();
Anthony
-- Anthony Williams Software Developer Just Software Solutions Ltd http://www.justsoftwaresolutions.co.uk
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk