Boost logo

Boost :

From: Michael Fink (michael.fink_at_[hidden])
Date: 2006-04-28 04:19:09


Hello,

while porting Boost to evc4 I encountered the following error in
boost\mpl\aux_\preprocessed\msvc60\and.hpp (and the same in or.hpp). Note
that evc4 is very similar to msvc6, so it uses most of the defines set for
this compiler.

The error messages are:

{path}\boost\mpl\aux_\preprocessed\msvc60\and.hpp(42) : error C2908:
explicit specialization; 'and_impl<1>' has already been instantiated from
the primary template
{path}\boost\mpl\aux_\preprocessed\msvc60\and.hpp(42) : error C2039:
'result_' : is not a member of '`global namespace''
{path}\boost\mpl\aux_\preprocessed\msvc60\and.hpp(42) : error C2143:
syntax error : missing ';' before '<'
{path}\boost\mpl\aux_\preprocessed\msvc60\and.hpp(42) : error C2059:
syntax error : '<'
{path}\boost\mpl\aux_\preprocessed\msvc60\and.hpp(44) : error C2143:
syntax error : missing ';' before '{'
{path}\boost\mpl\aux_\preprocessed\msvc60\and.hpp(44) : error C2447:
missing function header (old-style formal list?)
[...]

The code in and.hpp looks as follows:

namespace boost { namespace mpl {

namespace aux {
template< bool C_ > struct and_impl
{
    template<
          typename T1, typename T2, typename T3, typename T4
>
    struct result_
        : false_
    {
    };
};

template<> struct and_impl<true>
{
    template<
          typename T1, typename T2, typename T3, typename T4
>
    struct result_
        : and_impl<
              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
>::template result_< T2,T3,T4,true_ >
    {
    };
};

template<>
struct and_impl<true>
    ::result_< true_,true_,true_,true_ >
        : true_
{
};

} // namespace aux
[...]

The compiler doesn't recognize the out-of-class template instanciation. I
can comment out the last struct definition, but then the compiler gives
errors in other places where the template is used. How can I solve that
with the evc4 compiler?

Thanks,
Michael


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