Boost logo

Boost Users :

From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2008-02-26 15:20:03


AMDG

Alban Linard wrote:
> Hi,
>
> i am trying to build a recursive variant containing another variant, as
> described in the following source code:
>
> #include <cstdlib>
> #include <vector>
> #include <string>
> #include <boost/variant.hpp>
>
> typedef ::boost::variant
> < int
> , bool
> >
> first_variant;
>
> typedef ::boost::make_recursive_variant
> < first_variant
> , ::std::string
> , ::std::vector< ::boost::recursive_variant_ >
> >::type
> second_variant;
>
> int main()
> {
> first_variant f(true);
> second_variant s(f);
> return EXIT_SUCCESS;
> }
>
> It does not compile (g++-4.0 and g++-4.3). It seems that the
> "first_variant" part of second_variant is not used.
> Why this behavior ? Is there a workaround ?
>

This is a bug in boost::variant. You can fix it by changing line 101 of
boost/variant/recursive_variant.hpp
from
    typedef ::boost::variant< types > type;
to
    typedef ::boost::variant< over_sequence<types> > type;

In Christ,
Steven Watanabe


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net