home | help
std::make_unsigned(3)	       C++ Standard Libary	   std::make_unsigned(3)

NAME
     std::make_unsigned - std::make_unsigned

Synopsis
	Defined in header <type_traits>
	template< class T >		 (since C++11)
	struct make_unsigned;

	If T is an integral (except bool) or enumeration type, provides the mem-
     ber typedef
	type  which  is  the  unsigned integer type corresponding to T, with the
     same
	cv-qualifiers.

	If T is signed or unsigned char, short, int, long, long  long;	the  un-
     signed type from
	this list corresponding to T is provided.

	If T is an enumeration type or char, wchar_t
	, char8_t
	(since	C++20),  char16_t,  char32_t; the unsigned integer type with the
     smallest rank
	having the same sizeof as T is provided.

	Otherwise, the behavior is undefined. (until C++20)
	Otherwise, the program is ill-formed. (since C++20)

	If the program adds specializations for std::make_unsigned, the behavior
     is
	undefined.

Member types
	Name Definition
	type the unsigned integer type corresponding to T

Helper types
	template< class T >					  (since C++14)
	using make_unsigned_t = typename make_unsigned<T>::type;

Example
     // Run this code

      #include <type_traits>

      int main()
      {
	  using uchar_type = std::make_unsigned_t<char>;
	  using uint_type  = std::make_unsigned_t<int>;
	  using ulong_type = std::make_unsigned_t<volatile long>;

	  static_assert(
	      std::is_same_v<uchar_type, unsigned char> and
	      std::is_same_v<uint_type, unsigned int> and
	      std::is_same_v<ulong_type, volatile unsigned long>
	  );
      }

See also
	is_signed   checks if a type is a signed arithmetic type
	(C++11)     (class template)
	is_unsigned checks if a type is an unsigned arithmetic type
	(C++11)     (class template)
	make_signed makes the given integral type signed
	(C++11)     (class template)

http://cppreference.com 	   2024.06.10		   std::make_unsigned(3)

home | help