Namespaces
Variants

std:: make_unsigned

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
(C++11) (C++11) (C++11)
make_unsigned
(C++11)
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
Défini dans l'en-tête <type_traits>
template < class T >
struct make_unsigned ;
(depuis C++11)

Si T est un type intégral (sauf bool ) ou un type énumération, fournit le typedef membre type qui est le type entier non signé correspondant à T , avec les mêmes qualificateurs cv.

Si T est signé ou non signé char , short , int , long , long long ; le type non signé correspondant à T dans cette liste est fourni.

Si T est un type énumération ou char , wchar_t , char8_t (depuis C++20) , char16_t , char32_t ; le type entier non signé ayant le plus petit rang avec la même sizeof que T est fourni.

Sinon, le comportement est indéfini.

(until C++20)

Sinon, le programme est mal formé.

(since C++20)

Si le programme ajoute des spécialisations pour std::make_unsigned , le comportement est indéfini.

Table des matières

Types membres

Nom Définition
type le type entier non signé correspondant à T

Types auxiliaires

template < class T >
using make_unsigned_t = typename make_unsigned < T > :: type ;
(depuis C++14)

Exemple

#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>
    );
}

Voir aussi

(C++11)
vérifie si un type est un type arithmétique signé
(modèle de classe)
vérifie si un type est un type arithmétique non signé
(modèle de classe)
obtient le type signé correspondant pour le type intégral donné
(modèle de classe)