Namensräume
Varianten
Aktionen

std::make_unsigned

Von cppreference.com
< cpp‎ | types
 
 
Metaprogrammierungsbibliothek
Typmerkmale
Typkategorien
(C++11)
(C++11)(DR*)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11) 
(C++11)
(C++11)
Typeneigenschaften
(C++11)
(C++11)
(C++14)
(C++11)(deprecated in C++26)
(C++11)(bis C++20*)
(C++11)(veraltet in C++20)
(C++11)
Typmerkmalskonstanten
Metafunktionen
(C++17)
Unterstützte Operationen
Beziehungen und Eigenschaftsabfragen
Typmodifikationen
(C++11)(C++11)(C++11)
make_unsigned
(C++11)
Typentransformationen
(C++11)(veraltet in C++23)
(C++11)(veraltet in C++23)
(C++11)
(C++11)(bis C++20*)(C++17)

(C++11)
(C++11)
(C++17)
Rationale Arithmetik zur Compilezeit
Ganzzahlsequenzen zur Compilezeit
 
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) [bearbeiten]
prüft, ob ein Typ ein vorzeichenloser arithmetischer Typ ist
(Klassenvorlage) [bearbeiten]
erhält den entsprechenden vorzeichenbehafteten Typ für den gegebenen ganzzahligen Typ
(Klassenvorlage) [bearbeiten]