static const bool is_modulo;
(until C++11)static constexpr bool is_modulo;
(since 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.
is_modulo
is false for signed integer types, unless the implementation defines signed integer overflow to wrap.
T
value of std::numeric_limits<T>::is_modulo /* non-specialized */ false bool false char implementation-defined signed char implementation-defined unsigned char true wchar_t implementation-defined char8_t (since C++20) true char16_t (since C++11) true char32_t (since C++11) true short implementation-defined unsigned short true int implementation-defined unsigned int true long implementation-defined unsigned long true long long (C++11) implementation-defined unsigned long long (C++11) true float false double false long double false [edit] Notes
The standard said "On most machines, this is true for signed integers." before the resolution of LWG issue 2422. See GCC PR 22200 for a related discussion.
[edit] ExampleDemonstrates the behavior of modulo types:
Possible 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[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior LWG 612 C++98 the definition of "handle overflowsis_modulo
was required to be true for
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4