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