18 Concepts library [concepts]

18.4 Language-related concepts [concepts.lang]

18.4.7 Arithmetic concepts [concepts.arithmetic]

template<class T> concept integral = is_­integral_­v<T>; template<class T> concept signed_­integral = integral<T> && is_­signed_­v<T>; template<class T> concept unsigned_­integral = integral<T> && !signed_­integral<T>; template<class T> concept floating_­point = is_­floating_­point_­v<T>;
[Note 1:
signed_­integral can be modeled even by types that are not signed integer types ([basic.fundamental]); for example, char.
— end note]
[Note 2:
unsigned_­integral can be modeled even by types that are not unsigned integer types ([basic.fundamental]); for example, bool.
— end note]