[/ 
  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:make_unsigned make_unsigned]

   template <class T>
   struct make_unsigned
   {
      typedef __below type;
   };
   
   template <class T> using make_unsigned_t = typename make_unsigned<T>::type; // C++11 and above

__type If T is a unsigned integer type then the same type as T, if T is an 
signed integer type then the corresponding unsigned type.  
Otherwise if T is an enumerated or
character type (char or wchar_t) then an unsigned integer type with the same
width as T.

If T has any cv-qualifiers then these are also present on the result type.

[*Requires:]  T must be an integer or enumerated type, and must not be the type
bool.

__std_ref 3.9.1.

[all_compilers]

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

[table Examples

[ [Expression] [Result Type]]

[[`make_unsigned<int>::type`][`unsigned int`]]

[[`make_unsigned<unsigned int const>::type`] [`unsigned int const`]]

[[`make_unsigned<const unsigned long long>::type`] [`const unsigned long long`]]

[[`make_unsigned<my_enum>::type`] [An unsigned integer type with the same width as the enum.]]
[[`make_unsigned<wchar_t>::type`] [An unsigned integer type with the same width as wchar_t.]]

]

[endsect]

