Namespaces
Variants

std::numeric_limits<T>::is_bounded

From cppreference.com
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
Integer comparison functions
(C++20)(C++20)(C++20)    
(C++20)
Swap and type operations
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
 
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

#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) [edit]
[static]
identifies signed types
(public static member constant) [edit]
[static]
identifies exact types
(public static member constant) [edit]