Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++14) |
Defined in header <type_traits> | ||
template<class T> struct make_unsigned; | (since C++11) | |
IfT
is an integral (exceptbool) or enumeration type, provides the member typedeftype
which is the unsigned integer type corresponding toT
, with the same cv-qualifiers.
IfT
is signed or unsignedchar,short,int,long,longlong; the unsigned type from this list corresponding toT
is provided.
IfT
is an enumeration type orchar,wchar_t,char8_t(since C++20),char16_t,char32_t; the unsigned integer type with the smallestrank having the samesizeof
asT
is provided.
Otherwise, the behavior is undefined. | (until C++20) |
Otherwise, the program is ill-formed. | (since C++20) |
If the program adds specializations forstd::make_unsigned
, the behavior is undefined.
Contents |
Name | Definition |
type | the unsigned integer type corresponding toT |
template<class T> using make_unsigned_t=typename make_unsigned<T>::type; | (since C++14) | |
#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<volatilelong>; static_assert(std::is_same_v<uchar_type,unsignedchar> andstd::is_same_v<uint_type,unsignedint> andstd::is_same_v<ulong_type,volatileunsignedlong>);}
(C++11) | checks if a type is a signed arithmetic type (class template)[edit] |
(C++11) | checks if a type is an unsigned arithmetic type (class template)[edit] |
(C++11) | obtains the corresponding signed type for the given integral type (class template)[edit] |