|
Boost : |
From: Ralf W. Grosse-Kunstleve (rwgk_at_[hidden])
Date: 2006-03-13 22:31:02
--- Boris Gubenko <Boris.Gubenko_at_[hidden]> wrote:
> I can reproduce the problem compiling your program example against
> boost CVS HEAD. I also confirmed, that the program compiles cleanly
> with cxx V6.5-042 on Tru64 and with Intel's ICC 9.0 on Linux.
Yes, we have been using Boost.Python with Tru64 cxx for many years
now.
> > Could this be fixed with a few extra #ifdefs?
>
> I'll take a look tomorrow.
That would be fantastic.
> > BTW: Is the aCC compiler somehow related to the Tru64 compiler?
> >
> They both use the EDG front end.
We are successfully working with EDG 238, 245, 304. This makes me
hopeful that it is "just" a matter of finding the right switches.
I spent the better part of today beating on this. Unfortunately
I did't get too far, but at least I have this:
#include <boost/numeric/conversion/cast.hpp>
void
foo()
{
#ifdef ALL_FAIL
boost::mpl_::integral_c<boost::numeric::udt_builtin_mixture_enum, 0L> bar;
#else
boost::numeric::convdetail::get_subranged<
boost::numeric::convdetail::get_conversion_traits<
unsigned long, long>::target_type,
boost::numeric::convdetail::get_conversion_traits<
unsigned long, long>::source_type
>::udt_builtin_mixture bar;
#endif
}
The code in the ALL_FAIL fails both with cxx and aCC, as expected.
I got the code from the aCC error message produced by compiling
the pre-processed code in the #else branch, i.e.:
aCC -AA -I../boost -E numeric_cast.cpp | & sed 's/^#/\/\//' >
numeric_cast_pp.cpp
aCC -AA numeric_cast_pp.cpp -c
The full output from the last command is here:
http://cci.lbl.gov/~rwgk/tmp/hp_ux_aCC_error_2006_03_13_1922
The code in the #else branch above compiles cleanly with cxx. I.e.
somehow aCC arrives at 0L for the second integral_c<> template
parameter, but cxx does not.
My primary goal was to hunt down where the #ifdefs where the two
platforms differ. I noticed that the two compilers use different
branches in
/boost/mpl/aux_/lambda_support.hpp
cxx uses to shortcut near the top, aCC uses the longer code after the
#else. I changed the #ifdef around so that both compilers use the
shortcut near the top, but that didn't make a difference, at least
not for compiling the small fragment above.
This is all I know so far. I hope Aleksey and Dave will take a look,
in case it is something obvious to them.
Cheers,
Ralf
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk