std::numeric_limits::is_modulo
Da 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 | (até C++11) | |
staticconstexprbool 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.
[editar]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 |
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 |
[editar]Exemplo
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}
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
[editar]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) |