[mpl] error compiling with evc4

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
participants (1)
-
Michael Fink