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
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