std::numeric_limits::is_modulo
De cppreference.com
|
|
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. |
<metanoindex/>
<tbody> </tbody> static const bool is_modulo |
(até C++11) | |
static constexpr bool is_modulo |
(desde 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.
Especializações padrão
T
|
valor de
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
|
Exemplo
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
}
Saída:
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
Veja também
[estática] |
identifica os tipos inteiros 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. (membro estático público constante) |
[estática] |
identifica os IEC 559/IEEE 754 tipos de ponto flutuante 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. (membro estático público constante) |
[estática] |
identifica os tipos de exatas 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. (membro estático público constante) |