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. |
static const bool is_modulo |
(bis C + +11) | |
static constexpr bool 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 |
signed char | true |
unsigned char | true |
wchar_t | true |
char16_t | true |
char32_t | true |
short | true |
unsigned short | true |
int | true |
unsigned int | true |
long | true |
unsigned long | true |
long long | true |
unsigned long long | true |
float | false |
double | false |
long double | false |
[Bearbeiten] Beispiel
Demonstrates the behavior of modulo types
#include <iostream> #include <type_traits> #include <limits> template<class T> typename std::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<unsigned long>(); // 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) |