std::make_unsigned
| Definiert in der Kopfdatei <type_traits> |
||
| template< class T > struct make_unsigned; |
(seit C++11) | |
Wenn T ein ganzzahliger Typ (außer bool) oder ein Aufzählungstyp ist, stellt er den Member-Typedef type bereit, der dem vorzeichenlosen Ganzzahltyp entspricht, der zu T gehört, mit denselben cv-Qualifizierern.
Wenn T ein signierter oder vorzeichenloser char, short, int, long, long long ist; der vorzeichenlose Typ aus dieser Liste, der T entspricht, wird bereitgestellt.
Wenn T ein Aufzählungstyp oder char, wchar_t, char8_t(seit C++20), char16_t, char32_t ist; der vorzeichenlose Ganzzahltyp mit dem kleinsten Rang, der denselben sizeof wie T hat, wird 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_unsigned hinzufügt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Member types
| Name | Definition |
type
|
der vorzeichenlose Ganzzahltyp, der T entspricht |
[bearbeiten] Helper types
| template< class T > using make_unsigned_t = typename make_unsigned<T>::type; |
(seit C++14) | |
[bearbeiten] Example
#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<volatile long>; static_assert( std::is_same_v<uchar_type, unsigned char> and std::is_same_v<uint_type, unsigned int> and std::is_same_v<ulong_type, volatile unsigned long> ); }
[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) |