std::make_signed (3) - Linux Manuals

std::make_signed: std::make_signed


std::make_signed - std::make_signed


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;


// 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';


  char_type is 'signed char'? : true
  int_type is 'signed int'? : true
  long_type is 'volatile signed long'? : true

See also

is_signed checks if a type is a signed arithmetic type
              (class template)

is_unsigned checks if a type is an unsigned arithmetic type
              (class template)

make_unsigned makes the given integral type unsigned
              (class template)