[/ 
  Copyright 2007 John Maddock.
  Distributed under the Boost Software License, Version 1.0.
  (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt).
]

[section:is_signed is_signed]

   template <class T>
   struct is_signed : public __tof {};
  
__inherit If T is an signed integer type or an enumerated type with an
underlying signed integer type, then inherits from __true_type, 
otherwise inherits from __false_type.

__std_ref 3.9.1, 7.2.

__header ` #include <boost/type_traits/is_signed.hpp>` or ` #include <boost/type_traits.hpp>`

__examples

[:`is_signed<int>` inherits from `__true_type`.]

[:`is_signed<int const volatile>::type` is the type `__true_type`.]

[:`is_signed<unsigned int>::value` is an integral constant 
expression that evaluates to /false/.]

[:`is_signed<myclass>::value` is an integral constant 
expression that evaluates to /false/.]

[:`is_signed<char>::value` is an integral constant 
expression whose value depends upon the signedness of type `char`.]

[:`is_signed<long long>::value` is an integral constant 
expression that evaluates to /true/.]

[:`is_signed<T>::value_type` is the type `bool`.]

[endsect]

