|
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