I have found that

  boost::uint_t<64>::fast

gives a compiler error even on a platform (RH 7.3 on Intel) that has 
64-bit integers available (as long long).  On checking the documentation 
again, it does specify this behavior, but this strikes me as quite 
unreasonable; if a platform has long long, I should be able to use it.

I believe that all that is needed to fix this is inclusion of the 
following lines:

#ifdef BOOST_HAS_LONG_LONG
  template <> struct int_least_helper<0>
  { typedef long long least; };
#endif

#ifdef BOOST_HAS_LONG_LONG
  template <> struct int_least_helper<5>
  { typedef unsigned long long least; };
#endif

Also, I'd like to see the following added to <boost/integer.hpp>:

boost::signed_int<T>::type  -- Gives the signed integer type of the same
                               size as integer type T.
boost::unsigned_int<T>::type -- Gives the unsigned integer type of the 
                               same size as integer type T.

Rationale: I often find myself using
  std::iterator_traits<Iterator>::difference_type
for quantities that are guaranteed to be nonnegative; for these I would 
prefer to use an unsigned type.


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to