|
Boost : |
From: Joel de Guzman (djowel_at_[hidden])
Date: 2003-09-01 03:29:12
Eric! You DA Man!
-- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net Eric Friedman <ebf_at_[hidden]> wrote: > Dave Gomboc wrote: > [snip] >> I don't like get() because I cannot write x.get() when x is a POD. This >> would mean I have to support nilable<T> and T with different code, >> which is exactly what I'm trying to avoid. > > Why not overload boost::get again for optional? This would certainly improve > consistency with variant. For instance: > > optional<T> opt; > ... > T& r = boost::get<T>(opt); // throws bad_get if opt empty > T* p = boost::get<T>(&opt); // p is null if opt empty > > In the same line, we could make optional visitable: > > class my_visitor : public boost::static_visitor<> { > void operator()(boost::empty) const > { > ... > } > > void operator()(const T& operand) const > { > ... > } > }; > > boost::apply_visitor( my_visitor(), opt ); > > Support for visitation would also allow seamless integration with the > typeswitch construct I'm working on: > > switch_(opt) > = case_<boost::empty>( ... ) > = case_<T>( ... ) > ; > > I don't have experience with boost::optional, so I don't know how any of the > above would require changes to its interface or concepts.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk