Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++14) |
Defined in header <type_traits> | ||
template<class T> struct make_signed; | (since C++11) | |
IfT
is an integral (exceptbool) or enumeration type, provides the member typedeftype
which is the signed integer type corresponding toT
, with the same cv-qualifiers.
IfT
is signed or unsignedchar,short,int,long,longlong, the signed 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 signed 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_signed
, the behavior is undefined.
Contents |
Name | Definition |
type | the signed integer type corresponding toT |
template<class T> using make_signed_t=typename make_signed<T>::type; | (since C++14) | |
#include <type_traits> enumstruct E:unsignedshort{}; int main(){using char_type= std::make_signed_t<unsignedchar>;using int_type= std::make_signed_t<unsignedint>;using long_type= std::make_signed_t<volatileunsignedlong>;using enum_type= std::make_signed_t<E>; static_assert(std::is_same_v<char_type,signedchar> andstd::is_same_v<int_type,signedint> andstd::is_same_v<long_type,volatilesignedlong> andstd::is_same_v<enum_type,signedshort>);}
(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] |