Boost logo

Boost :

From: Boris Gubenko (Boris.Gubenko_at_[hidden])
Date: 2006-11-07 23:08:05


  On October 21th, I've submitted one-line patches for three
  mpl headers -- see attached. I did not get any response and
  the patches have not been applied.

  Is there anything wrong with the patches? If not, can they
  be applied to both the HEAD and the 1.34 branch?

  Thanks,
    Boris

  P.S. I'm copying the author of mpl library on this.

----- Original Message -----
From: "Boris Gubenko" <Boris.Gubenko_at_[hidden]>
To: <boost_at_[hidden]>
CC: Boris Gubenko <Boris.Gubenko_at_[hidden]>
Subj: [boost] [mpl] patches for outdated workarounds for aCC6

  Three mpl headers -- integral_c.hpp, integral_c_fwd.hpp and
  integral_wrapper.hpp -- contain outdated workarounds for HP-UX
  aCC. When compiled with aCC6, these workarounds are causing
  compilation errors because the resulting code looks like the
  following:

template< typename T, long N >
struct integral_c
{
//#if BOOST_WORKAROUND(__HP_aCC, BOOST_TESTED_AT(53800))
    static const T value = N;
//#else
// the correct code
// static const T value = (T) N;
//#endif
};
enum udt_builtin_mixture_enum {};
integral_c<udt_builtin_mixture_enum, 0> x;

  A typical compilation error is:

"../../../boost/mpl/aux_/integral_wrapper.hpp", line 45: error #2144: a
value
          of type "long" cannot be used to initialize an entity of type
          "const boost::numeric::sign_mixture_enum"
      BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N);

  Attached patches change invocation of BOOST_WORKAROUND macro in
  the aforementioned mpl headers from:

#if BOOST_WORKAROUND(__HP_aCC, BOOST_TESTED_AT(53800))

  to:

#if BOOST_WORKAROUND(__HP_aCC, <= 53800)

  With patches below, the following tests that previously failed
  to compile with "error #2144", compile and pass:

        Library Test
        ------------------ ---------------------
        conversion numeric_cast_test
        numeric/conversion traits_test
        numeric/conversion converter_test
        numeric/conversion udt_support_test
        numeric/conversion numeric_cast_test
        numeric/conversion udt_example_0
        python builtin_converters
        python vector_indexing_suite
        python pointer_vector
        xpressive regress
        xpressive c_traits
        xpressive misc1
        xpressive test_dynamic
        xpressive multiple_defs

  Can the three patches below be applied to both the HEAD and the
  RC branch?

  Thanks,
    Boris

Index: integral_c.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/mpl/integral_c.hpp,v
retrieving revision 1.22
diff -r1.22 integral_c.hpp
22c22
< #if BOOST_WORKAROUND(__HP_aCC, BOOST_TESTED_AT(53800))

---
> #if BOOST_WORKAROUND(__HP_aCC, <= 53800)
Index: integral_c_fwd.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/mpl/integral_c_fwd.hpp,v
retrieving revision 1.4
diff -r1.4 integral_c_fwd.hpp
22c22
< #if BOOST_WORKAROUND(__HP_aCC, BOOST_TESTED_AT(53800))
---
> #if BOOST_WORKAROUND(__HP_aCC, <= 53800)
Index: integral_wrapper.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/mpl/aux_/integral_wrapper.hpp,v
retrieving revision 1.10
diff -r1.10 integral_wrapper.hpp
68c68
<     || BOOST_WORKAROUND(__HP_aCC, BOOST_TESTED_AT(53800))
---
>     || BOOST_WORKAROUND(__HP_aCC, <= 53800)

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