std:: make_signed
| Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++14)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<type_traits>
|
||
|
template
<
class
T
>
struct make_signed ; |
(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 signé correspondant à
T
, avec les mêmes qualificateurs cv.
Si
T
est un
char
signé ou non signé,
short
,
int
,
long
,
long
long
, le type 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 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_signed
, le comportement est indéfini.
Table des matières |
Types membres
| Nom | Définition |
type
|
le type entier signé correspondant à
T
|
Types auxiliaires
|
template
<
class
T
>
using make_signed_t = typename make_signed < T > :: type ; |
(depuis C++14) | |
Exemple
#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> ); }
Voir aussi
|
(C++11)
|
vérifie si un type est un type arithmétique signé
(modèle de classe) |
|
(C++11)
|
vérifie si un type est un type arithmétique non signé
(modèle de classe) |
|
(C++11)
|
obtient le type signé correspondant pour le type intégral donné
(modèle de classe) |