std::make_signed
| Definiert in der Kopfdatei <type_traits> |
||
| template< class T > struct make_signed; |
(seit C++11) | |
Wenn T ein ganzzahliger Typ (außer bool) oder ein Aufzählungstyp ist, stellt er den Member-Typedef type bereit, der der vorzeichenbehaftete Ganzzahltyp ist, der T entspricht, mit denselben cv-Qualifizierern.
Wenn T ein vorzeichenbehaftetes oder vorzeichenloses char, short, int, long, long long ist, wird der vorzeichenbehaftete Typ aus dieser Liste bereitgestellt, der T entspricht.
Wenn T ein Aufzählungstyp oder char, wchar_t, char8_t(seit C++20), char16_t, char32_t ist, wird der vorzeichenbehaftete Ganzzahltyp mit dem kleinsten Rang mit demselben sizeof wie T bereitgestellt.
|
Andernfalls ist das Verhalten undefiniert. |
(bis C++20) |
|
Andernfalls ist das Programm fehlerhaft. |
(seit C++20) |
Wenn das Programm Spezialisierungen für std::make_signed hinzufügt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Member types
| Name | Definition |
type
|
der vorzeichenbehaftete Ganzzahltyp, der T entspricht |
[bearbeiten] Helper types
| template< class T > using make_signed_t = typename make_signed<T>::type; |
(seit C++14) | |
[bearbeiten] Example
#include <type_traits> enum struct E : unsigned short {}; int main() { using char_type = std::make_signed_t<unsigned char>; using int_type = std::make_signed_t<unsigned int>; using long_type = std::make_signed_t<volatile unsigned long>; using enum_type = std::make_signed_t<E>; static_assert( std::is_same_v<char_type, signed char> and std::is_same_v<int_type, signed int> and std::is_same_v<long_type, volatile signed long> and std::is_same_v<enum_type, signed short> ); }
[bearbeiten] See also
| (C++11) |
prüft, ob ein Typ ein vorzeichenbehafteter arithmetischer Typ ist (Klassenvorlage) |
| (C++11) |
prüft, ob ein Typ ein vorzeichenloser arithmetischer Typ ist (Klassenvorlage) |
| (C++11) |
erhält den entsprechenden vorzeichenbehafteten Typ für den gegebenen ganzzahligen Typ (Klassenvorlage) |