|
Boost Users : |
From: Alban Linard (alban.linard_at_[hidden])
Date: 2008-02-26 16:35:32
Steven Watanabe wrote:
> 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
Thank you very much!
Next step, i would like to store a container of first_variant instead of
a single one.
#include <cstdlib>
#include <vector>
#include <boost/variant.hpp>
typedef ::boost::variant
< int
, bool
>
first_variant;
typedef ::boost::make_recursive_variant
< ::std::vector< first_variant >
, ::std::vector< ::boost::recursive_variant_ >
>::type
second_variant;
int main()
{
::std::vector< first_variant > f;
second_variant s(f);
return EXIT_SUCCESS;
}
This crashes, too. Again, did i use it wrong or is it another problem ?
Thanks,
Alban Linard
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