std::numeric_limits::is_modulo
Aus cppreference.com
< cpp | types | numeric limits
![]() | This page has been machine-translated from the English version of the wiki using Google Translate. The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
staticconstbool is_modulo | (bis C + +11) | |
staticconstexprbool is_modulo | (seit C++11) | |
The value of std::numeric_limits<T>::is_modulo is true for all arithmetic types T
that handle overflows with modulo arithmetic, that is, if the result of addition, subtraction, multiplication, or division of this type would fall outside the range [min(), max()], the value returned by such operation differs from the expected value by a multiple of max()-min()+1.
[Bearbeiten]Standard Spezialisierungen
T | Wert std::numeric_limits<T>::is_modulo Original: value of std::numeric_limits<T>::is_modulo The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
/* non-specialized */ | false |
bool | false |
char | true |
signedchar | true |
unsignedchar | true |
wchar_t | true |
char16_t | true |
char32_t | true |
short | true |
unsignedshort | true |
int | true |
unsignedint | true |
long | true |
unsignedlong | true |
longlong | true |
unsignedlonglong | true |
float | false |
double | false |
longdouble | false |
[Bearbeiten]Beispiel
Demonstrates the behavior of modulo types
#include <iostream>#include <type_traits>#include <limits> template<class T>typenamestd::enable_if<std::numeric_limits<T>::is_modulo>::type check_overflow(){std::cout<<"\nmax value is "<<std::numeric_limits<T>::max()<<'\n'<<"min value is "<<std::numeric_limits<T>::min()<<'\n'<<"max value + 1 is "<<std::numeric_limits<T>::max()+1<<'\n';} int main(){ check_overflow<int>(); check_overflow<unsignedlong>();// check_overflow<float>(); // compile-time error, not a modulo type}
Output:
max value is 2147483647 min value is -2147483648 max value + 1 is -2147483648 max value is 18446744073709551615 min value is 0 max value + 1 is 0
[Bearbeiten]Siehe auch
[statisch] | identifiziert Integer-Typen Original: identifies integer types The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Mitglied konstanten) |
[statisch] | identifiziert die IEC 559/IEEE 754 Floating-Point-Typen Original: identifies the IEC 559/IEEE 754 floating-point types The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Mitglied konstanten) |
[statisch] | identifiziert genauen Typen Original: identifies exact types The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Mitglied konstanten) |