Boost logo

Boost Users :

From: Aaron W. LaFramboise (aaronrabiddog51_at_[hidden])
Date: 2004-07-25 23:07:29


Jeff Garland wrote:
> On Sun, 25 Jul 2004 17:16:38 -0500, Aaron W. LaFramboise wrote
>
>>Hi,
>>
>>As I'm sure you know, long long and unsigned long long are supported
>>by GCC in C++. However, -std=c++98 (not quite sure why, to be
>>honest) and -pedantic cause lots of warnings and errors to be
>>generated in the Boost headers when long long is used. In my
>>project, it is desirable to use these flags for other reasons, but
>>the effect these flags have on the Boost headers is decidedly undesirable.
>>
>>So far, I've been wrapping the Boost headers in forwarding headers that
>>mark the Boost headers as system headers so that they compile without
>>warning or error. Is there any disadvantage to doing this?
>>
>>GCC supports long long even with the above options, but only if
>>__extension__ is used. I notice that there a Boost-standard 64bit
>>type, boost::int64_t. Is there some reason that this can't be typedef'ed
>>using the GCC extension, and then this identifier used in all places
>>where 'long long' is being used? Are there type system rules that
>>prevent this, or some other reason?
>
>
> Is there some particular boost header that is using long long directly?
> date_time uses 64 bit types, but it uses boost::int64_t and its friends to be
> portable. Or are you saying that just using boost:int64_t is causing the problem?

It is the uses of "long long" instead of int64_t that are causing the
problem.

The following patch is a mechanical change that replaces all uses I
could find into int64_t and uint64_t. It also includes boost/cstdint.h
where necessary. However, this only changes headers. It is not
necessary, in my case, to make changes in lib/, because these are only
compiled by Boost.Build; however, it may be desirable to change these
also for some other reason. I'm not sure about this.

Index: boost/boost/cast.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/cast.hpp,v
retrieving revision 1.21
diff -c -r1.21 cast.hpp
*** boost/boost/cast.hpp 26 Feb 2004 18:26:46 -0000 1.21
--- boost/boost/cast.hpp 26 Jul 2004 03:56:12 -0000
***************
*** 157,167 ****
        // long / unsigned long long. Not intended to be full
        // numeric_limits replacements, but good enough for numeric_cast<>
        template <>
! struct fixed_numeric_limits_base<long long, false>
        {
            BOOST_STATIC_CONSTANT(bool, is_specialized = true);
            BOOST_STATIC_CONSTANT(bool, is_signed = true);
! static long long max BOOST_PREVENT_MACRO_SUBSTITUTION ()
            {
  # ifdef LONGLONG_MAX
                return LONGLONG_MAX;
--- 157,167 ----
        // long / unsigned long long. Not intended to be full
        // numeric_limits replacements, but good enough for numeric_cast<>
        template <>
! struct fixed_numeric_limits_base<int64_t, false>
        {
            BOOST_STATIC_CONSTANT(bool, is_specialized = true);
            BOOST_STATIC_CONSTANT(bool, is_signed = true);
! static int64_t max BOOST_PREVENT_MACRO_SUBSTITUTION ()
            {
  # ifdef LONGLONG_MAX
                return LONGLONG_MAX;
***************
*** 170,176 ****
  # endif
            }

! static long long min BOOST_PREVENT_MACRO_SUBSTITUTION ()
            {
  # ifdef LONGLONG_MIN
                return LONGLONG_MIN;
--- 170,176 ----
  # endif
            }

! static int64_t min BOOST_PREVENT_MACRO_SUBSTITUTION ()
            {
  # ifdef LONGLONG_MIN
                return LONGLONG_MIN;
***************
*** 181,191 ****
        };

        template <>
! struct fixed_numeric_limits_base<unsigned long long, false>
        {
            BOOST_STATIC_CONSTANT(bool, is_specialized = true);
            BOOST_STATIC_CONSTANT(bool, is_signed = false);
! static unsigned long long max
BOOST_PREVENT_MACRO_SUBSTITUTION ()
            {
  # ifdef ULONGLONG_MAX
                return ULONGLONG_MAX;
--- 181,191 ----
        };

        template <>
! struct fixed_numeric_limits_base<uint64_t, false>
        {
            BOOST_STATIC_CONSTANT(bool, is_specialized = true);
            BOOST_STATIC_CONSTANT(bool, is_signed = false);
! static uint64_t max BOOST_PREVENT_MACRO_SUBSTITUTION ()
            {
  # ifdef ULONGLONG_MAX
                return ULONGLONG_MAX;
***************
*** 194,200 ****
  # endif
            }

! static unsigned long long min
BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
        };
  # endif
      } // namespace detail
--- 194,200 ----
  # endif
            }

! static uint64_t min BOOST_PREVENT_MACRO_SUBSTITUTION () {
return 0; }
        };
  # endif
      } // namespace detail
Index: boost/boost/concept_check.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/concept_check.hpp,v
retrieving revision 1.27
diff -c -r1.27 concept_check.hpp
*** boost/boost/concept_check.hpp 22 Nov 2003 04:51:00 -0000 1.27
--- boost/boost/concept_check.hpp 26 Jul 2004 03:56:14 -0000
***************
*** 17,22 ****
--- 17,23 ----
  #define BOOST_CONCEPT_CHECKS_HPP

  #include <boost/config.hpp>
+ #include <boost/cstdint.hpp>
  #include <boost/iterator.hpp>
  #include <boost/type_traits/conversion_traits.hpp>
  #include <utility>
***************
*** 180,186 ****
    template <> struct SignedIntegerConcept<int> { void constraints() {} };
    template <> struct SignedIntegerConcept<long> { void constraints() {} };
  # if defined(BOOST_HAS_LONG_LONG)
! template <> struct SignedIntegerConcept<long long> { void
constraints() {} };
  # endif
    // etc.
  #endif
--- 181,187 ----
    template <> struct SignedIntegerConcept<int> { void constraints() {} };
    template <> struct SignedIntegerConcept<long> { void constraints() {} };
  # if defined(BOOST_HAS_LONG_LONG)
! template <> struct SignedIntegerConcept<int64_t> { void
constraints() {} };
  # endif
    // etc.
  #endif
Index: boost/boost/integer_fwd.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/integer_fwd.hpp,v
retrieving revision 1.2
diff -c -r1.2 integer_fwd.hpp
*** boost/boost/integer_fwd.hpp 27 Dec 2002 16:51:52 -0000 1.2
--- boost/boost/integer_fwd.hpp 26 Jul 2004 03:56:15 -0000
***************
*** 14,21 ****
  #include <climits> // for UCHAR_MAX, etc.
  #include <cstddef> // for std::size_t

! #include <boost/config.hpp> // for BOOST_NO_INTRINSIC_WCHAR_T
! #include <boost/limits.hpp> // for std::numeric_limits

  namespace boost
--- 14,22 ----
  #include <climits> // for UCHAR_MAX, etc.
  #include <cstddef> // for std::size_t

! #include <boost/cstdint.hpp> // for int64_t
! #include <boost/config.hpp> // for BOOST_NO_INTRINSIC_WCHAR_T
! #include <boost/limits.hpp> // for std::numeric_limits

  namespace boost
***************
*** 69,78 ****

  #ifdef ULLONG_MAX
  template < >
! class integer_traits< long long >;

  template < >
! class integer_traits< unsigned long long >;
  #endif

--- 70,79 ----

  #ifdef ULLONG_MAX
  template < >
! class integer_traits< int64_t >;

  template < >
! class integer_traits< uint64_t >;
  #endif

Index: boost/boost/integer_traits.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/integer_traits.hpp,v
retrieving revision 1.23
diff -c -r1.23 integer_traits.hpp
*** boost/boost/integer_traits.hpp 27 Aug 2003 10:30:53 -0000 1.23
--- boost/boost/integer_traits.hpp 26 Jul 2004 03:56:15 -0000
***************
*** 22,27 ****
--- 22,28 ----
  #define BOOST_INTEGER_TRAITS_HPP

  #include <boost/config.hpp>
+ #include <boost/cstdint.hpp>
  #include <boost/limits.hpp>

  // These are an implementation detail and not part of the interface
***************
*** 159,211 ****
  #if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG)

  template<>
! class integer_traits<long long>
! : public std::numeric_limits<long long>,
! public detail::integer_traits_base<long long, LLONG_MIN, LLONG_MAX>
  { };

  template<>
! class integer_traits<unsigned long long>
! : public std::numeric_limits<unsigned long long>,
! public detail::integer_traits_base<unsigned long long, 0, ULLONG_MAX>
  { };

  #elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG)

  template<>
! class integer_traits<long long> : public std::numeric_limits<long
long>, public detail::integer_traits_base<long long, LONG_LONG_MIN,
LONG_LONG_MAX>{ };
! template<>
! class integer_traits<unsigned long long>
! : public std::numeric_limits<unsigned long long>,
! public detail::integer_traits_base<unsigned long long, 0,
ULONG_LONG_MAX>
  { };

  #elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG)

  template<>
! class integer_traits<long long>
! : public std::numeric_limits<long long>,
! public detail::integer_traits_base<long long, LONGLONG_MIN,
LONGLONG_MAX>
  { };

  template<>
! class integer_traits<unsigned long long>
! : public std::numeric_limits<unsigned long long>,
! public detail::integer_traits_base<unsigned long long, 0,
ULONGLONG_MAX>
  { };

  #elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG)

  template<>
! class integer_traits<long long>
! : public std::numeric_limits<long long>,
! public detail::integer_traits_base<long long, -_LLONG_MAX - _C2,
_LLONG_MAX>
  { };

  template<>
! class integer_traits<unsigned long long>
! : public std::numeric_limits<unsigned long long>,
! public detail::integer_traits_base<unsigned long long, 0, _ULLONG_MAX>
  { };

  #endif
--- 160,214 ----
  #if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG)

  template<>
! class integer_traits<int64_t>
! : public std::numeric_limits<int64_t>,
! public detail::integer_traits_base<int64_t, LLONG_MIN, LLONG_MAX>
  { };

  template<>
! class integer_traits<uint64_t>
! : public std::numeric_limits<uint64_t>,
! public detail::integer_traits_base<uint64_t, 0, ULLONG_MAX>
  { };

  #elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG)

  template<>
! class integer_traits<int64_t> : public std::numeric_limits<int64_t>,
! public
! detail::integer_traits_base<int64_t, LONG_LONG_MIN, LONG_LONG_MAX>{ };
! template<>
! class integer_traits<uint64_t>
! : public std::numeric_limits<uint64_t>,
! public detail::integer_traits_base<uint64_t, 0, ULONG_LONG_MAX>
  { };

  #elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG)

  template<>
! class integer_traits<int64_t>
! : public std::numeric_limits<int64_t>,
! public detail::integer_traits_base<int64_t, LONGLONG_MIN,
LONGLONG_MAX>
  { };

  template<>
! class integer_traits<uint64_t>
! : public std::numeric_limits<uint64_t>,
! public detail::integer_traits_base<uint64_t, 0, ULONGLONG_MAX>
  { };

  #elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG)

  template<>
! class integer_traits<int64_t>
! : public std::numeric_limits<int64_t>,
! public detail::integer_traits_base<int64_t, -_LLONG_MAX - _C2,
_LLONG_MAX>
  { };

  template<>
! class integer_traits<uint64_t>
! : public std::numeric_limits<uint64_t>,
! public detail::integer_traits_base<uint64_t, 0, _ULLONG_MAX>
  { };

  #endif
Index: boost/boost/limits.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/limits.hpp,v
retrieving revision 1.10
diff -c -r1.10 limits.hpp
*** boost/boost/limits.hpp 28 Feb 2004 21:02:02 -0000 1.10
--- boost/boost/limits.hpp 26 Jul 2004 03:56:16 -0000
***************
*** 12,17 ****
--- 12,18 ----
  #define BOOST_LIMITS

  #include <boost/config.hpp>
+ #include <boost/cstdint.hpp>

  #ifdef BOOST_NO_LIMITS
  # include <boost/detail/limits.hpp>
***************
*** 25,31 ****
  #ifdef BOOST_HAS_MS_INT64
  # define BOOST_LLT __int64
  #else
! # define BOOST_LLT long long
  #endif

  namespace std
--- 26,32 ----
  #ifdef BOOST_HAS_MS_INT64
  # define BOOST_LLT __int64
  #else
! # define BOOST_LLT int64_t
  #endif

  namespace std
Index: boost/boost/iterator/counting_iterator.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/iterator/counting_iterator.hpp,v
retrieving revision 1.4
diff -c -r1.4 counting_iterator.hpp
*** boost/boost/iterator/counting_iterator.hpp 1 Feb 2004 22:11:47 -0000 1.4
--- boost/boost/iterator/counting_iterator.hpp 26 Jul 2004 03:56:18 -0000
***************
*** 6,11 ****
--- 6,12 ----
  #ifndef COUNTING_ITERATOR_DWA200348_HPP
  # define COUNTING_ITERATOR_DWA200348_HPP

+ # include <boost/cstdint.hpp>
  # include <boost/iterator/iterator_adaptor.hpp>
  # include <boost/detail/numeric_traits.hpp>
  # include <boost/mpl/bool.hpp>
***************
*** 58,68 ****

  # if defined(BOOST_HAS_LONG_LONG)
    template <>
! struct is_numeric<long long>
      : mpl::true_ {};

    template <>
! struct is_numeric<unsigned long long>
      : mpl::true_ {};
  # endif

--- 59,69 ----

  # if defined(BOOST_HAS_LONG_LONG)
    template <>
! struct is_numeric<int64_t>
      : mpl::true_ {};

    template <>
! struct is_numeric<uint64_t>
      : mpl::true_ {};
  # endif

Index: boost/boost/numeric/interval/detail/ppc_rounding_control.hpp
===================================================================
RCS file:
/cvsroot/boost/boost/boost/numeric/interval/detail/ppc_rounding_control.hpp,v
retrieving revision 1.3
diff -c -r1.3 ppc_rounding_control.hpp
*** boost/boost/numeric/interval/detail/ppc_rounding_control.hpp 19 Jul
2004 21:38:06 -0000 1.3
--- boost/boost/numeric/interval/detail/ppc_rounding_control.hpp 26 Jul
2004 03:56:22 -0000
***************
*** 19,31 ****
  #error This header only works on PPC CPUs.
  #endif

  namespace boost {
  namespace numeric {
  namespace interval_lib {
  namespace detail {

  typedef union {
! long long int imode;
    double dmode;
  } rounding_mode_struct;

--- 19,33 ----
  #error This header only works on PPC CPUs.
  #endif

+ #include <boost/cstdint.hpp>
+
  namespace boost {
  namespace numeric {
  namespace interval_lib {
  namespace detail {

  typedef union {
! int64_t int imode;
    double dmode;
  } rounding_mode_struct;

Index: boost/boost/python/type_id.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/python/type_id.hpp,v
retrieving revision 1.14
diff -c -r1.14 type_id.hpp
*** boost/boost/python/type_id.hpp 12 Mar 2004 18:43:08 -0000 1.14
--- boost/boost/python/type_id.hpp 26 Jul 2004 03:56:24 -0000
***************
*** 6,11 ****
--- 6,13 ----
  #ifndef TYPE_ID_DWA2002517_HPP
  # define TYPE_ID_DWA2002517_HPP

+ # include <boost/cstdint.hpp>
+
  # include <boost/python/detail/prefix.hpp>

  # include <boost/python/detail/msvc_typeinfo.hpp>
***************
*** 101,107 ****
  // using Python's macro instead of Boost's - we don't seem to get the
  // config right all the time.
  # ifdef HAVE_LONG_LONG
! BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID(long long)
  # endif
  # undef BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID
  # endif
--- 103,109 ----
  // using Python's macro instead of Boost's - we don't seem to get the
  // config right all the time.
  # ifdef HAVE_LONG_LONG
! BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID(int64_t)
  # endif
  # undef BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID
  # endif
Index: boost/boost/python/detail/wrap_python.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/python/detail/wrap_python.hpp,v
retrieving revision 1.17
diff -c -r1.17 wrap_python.hpp
*** boost/boost/python/detail/wrap_python.hpp 1 May 2003 05:19:47 -0000 1.17
--- boost/boost/python/detail/wrap_python.hpp 26 Jul 2004 03:56:25 -0000
***************
*** 24,29 ****
--- 24,30 ----
  // Python's LongObject.h helpfully #defines ULONGLONG_MAX for us,
  // which confuses Boost's config
  //
+ #include <boost/cstdint.h>
  #include <limits.h>
  #ifndef ULONG_MAX
  # define BOOST_PYTHON_ULONG_MAX_UNDEFINED
***************
*** 86,92 ****
  # endif

  # define HAVE_LONG_LONG 1
! # define LONG_LONG long long
  # endif

  # elif defined(__MWERKS__)
--- 87,93 ----
  # endif

  # define HAVE_LONG_LONG 1
! # define LONG_LONG int64_t
  # endif

  # elif defined(__MWERKS__)
Index: boost/boost/spirit/phoenix/operators.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/spirit/phoenix/operators.hpp,v
retrieving revision 1.6
diff -c -r1.6 operators.hpp
*** boost/boost/spirit/phoenix/operators.hpp 9 Jul 2004 08:28:05 -0000 1.6
--- boost/boost/spirit/phoenix/operators.hpp 26 Jul 2004 03:56:32 -0000
***************
*** 23,28 ****
--- 23,29 ----
  #include <boost/spirit/phoenix/actor.hpp>
  #include <boost/spirit/phoenix/composite.hpp>
  #include <boost/config.hpp>
+ #include <boost/cstdint.hpp>

///////////////////////////////////////////////////////////////////////////////
  namespace phoenix {
***************
*** 373,380 ****
  template <> struct rank<unsigned long> { static int const value =
100; };

  #ifdef BOOST_HAS_LONG_LONG
! template <> struct rank<long long> { static int const value =
110; };
! template <> struct rank<unsigned long long> { static int const value =
120; };
  #endif

  template <> struct rank<float> { static int const value =
130; };
--- 374,381 ----
  template <> struct rank<unsigned long> { static int const value =
100; };

  #ifdef BOOST_HAS_LONG_LONG
! template <> struct rank<int64_t> { static int const value =
110; };
! template <> struct rank<uint64_t> { static int const value =
120; };
  #endif

  template <> struct rank<float> { static int const value =
130; };
Index: boost/boost/spirit/utility/chset.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/spirit/utility/chset.hpp,v
retrieving revision 1.6
diff -c -r1.6 chset.hpp
*** boost/boost/spirit/utility/chset.hpp 9 Jul 2004 08:28:06 -0000 1.6
--- boost/boost/spirit/utility/chset.hpp 26 Jul 2004 03:56:32 -0000
***************
*** 11,16 ****
--- 11,17 ----
  #define BOOST_SPIRIT_CHSET_HPP

///////////////////////////////////////////////////////////////////////////////
+ #include <boost/cstdint.hpp>
  #include <boost/shared_ptr.hpp>
  #include <boost/spirit/core/primitives/primitives.hpp>
  #include <boost/spirit/utility/impl/chset/basic_chset.hpp>
***************
*** 164,177 ****

  #ifdef BOOST_HAS_LONG_LONG
  //////////////////////////////////
! inline chset<long long>
! chset_p(long long ch)
! { return chset<long long>(ch); }

  //////////////////////////////////
! inline chset<unsigned long long>
! chset_p(unsigned long long ch)
! { return chset<unsigned long long>(ch); }
  #endif

///////////////////////////////////////////////////////////////////////////////
--- 165,178 ----

  #ifdef BOOST_HAS_LONG_LONG
  //////////////////////////////////
! inline chset<int64_t>
! chset_p(int64_t ch)
! { return chset<int64_t>(ch); }

  //////////////////////////////////
! inline chset<uint64_t>
! chset_p(uint64_t ch)
! { return chset<uint64_t>(ch); }
  #endif

///////////////////////////////////////////////////////////////////////////////
Index: boost/boost/type_traits/is_convertible.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/type_traits/is_convertible.hpp,v
retrieving revision 1.25
diff -c -r1.25 is_convertible.hpp
*** boost/boost/type_traits/is_convertible.hpp 6 Jan 2004 13:37:10
-0000 1.25
--- boost/boost/type_traits/is_convertible.hpp 26 Jul 2004 03:56:33 -0000
***************
*** 12,17 ****
--- 12,18 ----
  #ifndef BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
  #define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED

+ #include "boost/cstdint.hpp"
  #include "boost/type_traits/detail/yes_no_type.hpp"
  #include "boost/type_traits/config.hpp"
  #include "boost/type_traits/is_array.hpp"
***************
*** 260,266 ****
      TT_AUX_IS_CONVERTIBLE_SPEC_2(F,short) \
      TT_AUX_IS_CONVERTIBLE_SPEC_2(F,int) \
      TT_AUX_IS_CONVERTIBLE_SPEC_2(F,long) \
! TT_AUX_IS_CONVERTIBLE_SPEC_2(F,long long) \
      /**/

  # define TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(F) \
--- 261,267 ----
      TT_AUX_IS_CONVERTIBLE_SPEC_2(F,short) \
      TT_AUX_IS_CONVERTIBLE_SPEC_2(F,int) \
      TT_AUX_IS_CONVERTIBLE_SPEC_2(F,long) \
! TT_AUX_IS_CONVERTIBLE_SPEC_2(F,int64_t) \
      /**/

  # define TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(F) \
Index: boost/boost/type_traits/is_integral.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/type_traits/is_integral.hpp,v
retrieving revision 1.8
diff -c -r1.8 is_integral.hpp
*** boost/boost/type_traits/is_integral.hpp 1 May 2004 10:32:58 -0000 1.8
--- boost/boost/type_traits/is_integral.hpp 26 Jul 2004 03:56:34 -0000
***************
*** 10,15 ****
--- 10,16 ----
  #define BOOST_TT_IS_INTEGRAL_HPP_INCLUDED

  #include "boost/config.hpp"
+ #include "boost/cstdint.hpp"

  // should be the last #include
  #include "boost/type_traits/detail/bool_trait_def.hpp"
***************
*** 57,64 ****
  #endif

  # if defined(BOOST_HAS_LONG_LONG)
! BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned long long,true)
! BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,long long,true)
  #elif defined(BOOST_HAS_MS_INT64)
  BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int64,true)
  BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
--- 58,65 ----
  #endif

  # if defined(BOOST_HAS_LONG_LONG)
! BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,uint64_t,true)
! BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,int64_t,true)
  #elif defined(BOOST_HAS_MS_INT64)
  BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int64,true)
  BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
Index: boost/boost/type_traits/type_with_alignment.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/type_traits/type_with_alignment.hpp,v
retrieving revision 1.24
diff -c -r1.24 type_with_alignment.hpp
*** boost/boost/type_traits/type_with_alignment.hpp 26 Jan 2004
12:20:03 -0000 1.24
--- boost/boost/type_traits/type_with_alignment.hpp 26 Jul 2004 03:56:34
-0000
***************
*** 8,13 ****
--- 8,14 ----
  #ifndef BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
  #define BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED

+ #include "boost/cstdint.hpp"
  #include "boost/mpl/if.hpp"
  #include "boost/preprocessor/list/for_each_i.hpp"
  #include "boost/preprocessor/tuple/to_list.hpp"
***************
*** 43,49 ****
  #ifdef BOOST_HAS_LONG_LONG
  #define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \
          12, ( \
! char, short, int, long, long long, float, double, long double \
          , void*, function_ptr, member_ptr, member_function_ptr))
  #else
  #define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \
--- 44,50 ----
  #ifdef BOOST_HAS_LONG_LONG
  #define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \
          12, ( \
! char, short, int, long, int64_t, float, double, long double \
          , void*, function_ptr, member_ptr, member_function_ptr))
  #else
  #define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net