Hello,

I'm modelizing a syntax tree using boost::variant, std::tuple and
std::vector. This syntax tree has a lot of cyclic dependencies, so I have
to use boost::recursive_wrapper along with forward declarations.

I've encountered a case that my compiler (GCC 4.7) refuses to build.
Here is the source code: http://pastebin.com/3a5xU06x (it's pretty short)
Here is the compilation error message: http://pastebin.com/Zpa3TCp2

(Of course, reordering the declarations would solve the problem in this
example, but it's not the point. This is a constraint I can't get rid of
in my whole project.)

The compiler complains about an ambiguous call of convert_construct() in
Boost's source code, where a comment says:
    NOTE TO USER :
    Compile error here indicates that the given type is not
    unambiguously convertible to one of the variant's types
    (or that no conversion exists).

c can be converted to boost::recursive_wrapper<c_fwd> though.
Where is the ambiguity?

I really don't know what to do. Help would be appreciated.
Thank you.