std::make_signed (3) - Linux Manuals

std::make_signed: std::make_signed

NAME

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:


  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)
(C++11)


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


make_unsigned makes the given integral type unsigned
              (class template)
(C++11)