Boost logo

Boost :

Subject: [boost] [type_traits] warning free is_signed on g++
From: Edd Dawson (lists_at_[hidden])
Date: 2009-09-12 10:51:51


Hello,

When using boost::is_signed<> on types such as unsigned int and unsigned long,
various recent versions of g++ (MinGW 4.4.0 and Apple's 4.0.1, at least) spit
out a warning:

   warning: comparison of unsigned expression < 0 is always false

Would there be any harm in changing boost::detail::is_signed_helper in
boost/type_traits/is_signed.hpp as follows?

   template <class T>
   struct is_signed_helper
   {
      typedef typename remove_cv<T>::type no_cv_t;
      // BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) < 0));
      BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) < 1));
   };

This change gets rid of the warnings emitted by g++.

Kind regards,

Edd


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