From: Maxim Yegorushkin (e-maxim_at_[hidden])
Date: 2004-11-04 15:54:44


> From: Caleb Epstein [mailto:caleb.epstein_at_[hidden]]
> Subject: Re: const_string + recursive_variant = boom
>
> On Thu, 4 Nov 2004 22:18:29 +0300, Maxim Yegorushkin
<e-maxim_at_[hidden]> wrote:
> > I striped the sample down to:
> >
> > typedef make_recursive_variant<int, std::pair<int,
> > recursive_variant_> >::type value;
> > value v;
> >
> > Which compiles fine with MS VC 7.1 and fails to compile on Intel C++
8.
>
> Well this code compiles fine on g++ 3.3.2 and g++ 3.4.2.
>
> I tried g++ 3.4.2 on my original example and it gives basically the
> same results as 3.3.2 (taking sizeof an incomplete type) but the
> compiler dies with an ICE.
>
> The newer g++ does however suggests that AllocatorT::rebind should be
> AllocatorT::template rebind in const_string/detail/storage.hpp, lines
> 79 and 86.

Well, variant's docs say little about recursive variants and standard
templates (which shall not be used with incomplete types) and I am not
an expert in variant architecture, so it would be nice if someone
knowledgeable could clarify the issue.