Namensräume
Varianten
Aktionen

std::make_signed

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_signed
(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_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) [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]