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 ? Thanks, Alban Linard