std::make_signed (3) Linux Manual Page
std::make_signed – std::make_signed
Synopsis
Defined in header<type_traits>
template <class T>
(since C++ 11)
struct make_signed;
If T is an integral (except bool) or enumeration type, provides the member typedef type which is the signed integer type corresponding to T, with the same cv-qualifiers.
Otherwise, the behavior is undefined.
Member types
Name Definition
type the signed integer type corresponding to T
Helper types
template< class T > (since C++14)
using make_signed_t = typename make_signed<T>::type;
Example
// Run this code
#include <iostream>
#include <type_traits>
int main()
{
typedef std::make_signed<unsigned char>::type char_type;
typedef std::make_signed<unsigned int>::type int_type;
typedef std::make_signed<volatile unsigned long>::type long_type;
bool ok1 = std::is_same<char_type, signed char>::value;
bool ok2 = std::is_same<int_type, signed int>::value;
bool ok3 = std::is_same<long_type, volatile signed long>::value;
std::cout << std::boolalpha
<< "char_type is 'signed char'? : " << ok1 << '\n'
<< "int_type is 'signed int'? : " << ok2 << '\n'
<< "long_type is 'volatile signed long'? : " << ok3 << '\n';
}
Output:
See also
is_signed checks if a type is a signed arithmetic type
(C++11)
is_unsigned checks if a type is an unsigned arithmetic type
(C++11)
make_unsigned makes the given integral type unsigned
(C++11)
