| Home | Libraries | People | FAQ | More

### make_signed

    template <class T>
    struct make_signed
    {
       typedef see-below type;
    };

    template <class T> using make_signed_t = typename make_signed<T>::type; // C++11 and above

type: If T is a signed integer type then the same type as T, if T is an unsigned integer type then the corresponding signed type. Otherwise if T is an enumerated or character type (char or wchar_t) then a signed 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.

C++ Standard Reference: 3.9.1.

Compiler Compatibility: All current compilers are supported by this trait.

Header: `#include <boost/type_traits/make_signed.hpp>` or `#include <boost/type_traits.hpp>`

Table 1.25. Examples

Expression | Result Type
--- | ---
`make_signed<int>::type` | `int`
`make_signed<unsigned int const>::type` | `int const`
`make_signed<const unsigned long long>::type` | `const long long`
`make_signed<my_enum>::type` | A signed integer type with the same width as the enum.
`make_signed<wchar_t>::type` | A signed integer type with the same width as wchar_t.