Boost logo

Boost :

From: Aleksey Gurtovoy (agurtovoy_at_[hidden])
Date: 2003-11-13 07:02:08


Eric Friedman wrote:
> For a while now the variant regression tests have turned with up errors
> such as the following:
>
> error C2653: 'Iterator' : is not a class or namespace name
> D:\boost6\main\boost\boost\mpl\aux_\deref_wknd.hpp(28) : see
> declaration of 'Iterator'
> D:\boost6\main\boost\boost\variant\variant.hpp(124) : see
> reference to class template instantiation
> 'boost::mpl::aux::deref_wknd<Iterator>' being compiled
> with
> [
> Iterator=boost::detail::variant::max_value<Sequence,F>::max_it
> ]
>
>
> Looking at deref_wknd.hpp, I noticed that the ETI workaround "fixes" the
> bug by specializing on int. My understanding of MSVC7 though is that
> sometimes the ETI bug is more complicated, passing a type convertible to
> int instead of int itself.

Yep.

>
> So I don't know for sure that this is an ETI problem, but seeing as the
> tests compile fine under MSVC6, my guess is that the error is the
> MSVC7-specific version of the ETI bug.

It was.

>
> Assuming I am right, I know msvc_eti_base is available to solve problems
> like this.

To be exact, 'is_msvc_eti_arg'. 'msvc_eti_base' covers a specific case of
inheriting from a dependent type, where in case of an ETI argument you have
to return a class type instead of 'int', which is wrong for a
general-purpose ETI workaround.

> However, since I don't have VC7 to test, I don't want to make
> the patch myself. ... Aleksey?

Fixed in the main trunk.

Aleksey


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk