Boost logo

Boost :

From: (noreply_at_[hidden])
Date: 2006-01-11 01:58:07

Feature Requests item #1402546, was opened at 2006-01-10 22:58
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting:

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: [variant] Compile time checked getter

Initial Comment:
[Sorry if anyone feels bad about this, I already posted
it in usera and devel lists, with no answer at all]

During a redesign, I began using boost::variant, and I
detected that trying to get a value of a type not
included in variant type-list resulted in run-time
error (cast or null pointer).

I feel that a variant should only try to return a valid
type from its type-list, otherwise giving a compiler
error, and reserve runttime errors for that case when
someone tries to get a value from a type contained in
the typelist, but not the actual type contained in the
actual object.

In such a way, I have made a little redesign on
boost::get and called it boost::checked_get:

namespace boost {

template <typename U,
    typename add_pointer<U>::type
      boost::variant< BOOST_VARIANT_ENUM_PARAMS(T) >*
    typedef boost::variant<

    /* throw a compile-time error if type is not
contained on type
list */
        typename mpl::find<typename
        typename mpl::end<typename

    typedef typename add_pointer<U>::type U_ptr;
    if (!operand) return static_cast<U_ptr>(0);

    detail::variant::get_visitor<U> v;
    return operand->apply_visitor(v);

} // end of addition to namespace boost

And, of course, the rest of the templates needed for
const *, ref and const&..

I think it would be interesting to include it in boost
libraries. In fact, I use it intensely.

Best regards,

Zara (yozara_at_[hidden])


You can respond by visiting:

This email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
Boost-bugs mailing list

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