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.
Name | Definition |
---|---|
type | the unsigned integer type corresponding to T |
template< class T > using make_unsigned_t = typename make_unsigned<T>::type; | (since C++14) |
#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
(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) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/types/make_unsigned