From: Jens Maurer (Jens.Maurer_at_[hidden])
Date: 2001-06-01 13:17:12
> We are trying to use the boost::crc lib with lyx, but have this
> problem with Compaq cxx:
> Well, the test case is
> #include <boost/crc.hpp>
> The error message is
> fantomas: cxx -V
> Compaq C++ V6.2-024 for Digital UNIX V4.0F (Rev. 1229)
I could reproduce the error. Note that the regression tests use
Compaq C++ V6.3-008 now.
BOOST_STATIC_CONSTANT is expanded to "static const", not "enum"
on this platform. I believe this is mostly ok. Using the "enum"
definition for BOOST_STATIC_CONSTANT leads to the same error.
It appears that this compiler version does not regard integral
constant expressions involving type casts as such.
Here's a fix which makes the regression test work. This fix
should be further conditioned on __DECCXX_VER < 60300000
(with a comment pointing to Compaq C++ 6.2-024). The fix
tastes sufficiently bad that I would prefer someone else
checks it into the CVS, possibly after approval by Daryle.
diff -u -r1.1 crc.hpp
--- crc.hpp 2001/05/16 12:55:41 1.1
+++ crc.hpp 2001/06/01 18:12:39
@@ -280,10 +280,15 @@
typedef typename base_type::least least;
typedef typename base_type::fast fast;
+ static const least high_bit = 1ul << ( Bits - 1u );
+ static const fast high_bit_fast = 1ul << ( Bits - 1u );
BOOST_STATIC_CONSTANT( least, high_bit = (least( 1u ) << ( Bits
- 1u )) );
BOOST_STATIC_CONSTANT( fast, high_bit_fast = (fast( 1u ) << ( Bits
- 1u )) );
}; // boost::detail::high_uint_t
@@ -340,7 +345,11 @@
BOOST_STATIC_CONSTANT( fast, high_bit_fast = base_type::high_bit_fast );
+ static const least sig_bits = (~( ~( 0ul ) << Bits )) ;
BOOST_STATIC_CONSTANT( least, sig_bits = (~( ~(least( 0u )) << Bits )) );
BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) );
}; // boost::detail::mask_uint_t
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk