std::numeric_limits<T>::is_bounded
From cppreference.com
static const bool is_bounded;
|
(until C++11) | |
static constexpr bool is_bounded;
|
(since C++11) | |
The value of std::numeric_limits<T>::is_bounded is true for all arithmetic types T that represent a finite set of values. While all fundamental types are bounded, this constant would be false in a specialization of std::numeric_limits for a library-provided arbitrary precision arithmetic type.
Standard specializations
T
|
value of std::numeric_limits<T>::is_bounded
|
/* non-specialized */
|
false
|
bool
|
true
|
char
|
true
|
signed char
|
true
|
unsigned char
|
true
|
wchar_t
|
true
|
char8_t (since C++20)
|
true
|
char16_t (since C++11)
|
true
|
char32_t (since C++11)
|
true
|
short
|
true
|
unsigned short
|
true
|
int
|
true
|
unsigned int
|
true
|
long
|
true
|
unsigned long
|
true
|
long long (since C++11)
|
true
|
unsigned long long (since C++11)
|
true
|
float
|
true
|
double
|
true
|
long double
|
true
|
Example
Run this code
#include <limits>
#include <ratio>
template <typename... Types>
constexpr bool all_bounded = (std::numeric_limits<Types>::is_bounded and ...);
static_assert(all_bounded<
bool, char, signed char, unsigned char, wchar_t, char8_t, char16_t, char32_t,
short, unsigned short, int, unsigned int, long, unsigned long, long long,
unsigned long long, float, double, long double
>);
static_assert(not std::numeric_limits<std::exa>::is_bounded);
int main() {}
See also
[static] |
identifies integer types (public static member constant) |
[static] |
identifies signed types (public static member constant) |
[static] |
identifies exact types (public static member constant) |