std::numeric_limits<T>::is_specialized
From cppreference.com
< cpp | types | numeric limits
staticconstbool is_specialized; | (until C++11) | |
staticconstexprbool is_specialized; | (since C++11) | |
The value of std::numeric_limits<T>::is_specialized is true for all T
for which there exists a specialization of std::numeric_limits.
[edit]Standard specializations
T | value of std::numeric_limits<T>::is_specialized |
/* non-specialized */ | false |
bool | true |
char | true |
signedchar | true |
unsignedchar | true |
wchar_t | true |
char8_t(since C++20) | true |
char16_t(since C++11) | true |
char32_t(since C++11) | true |
short | true |
unsignedshort | true |
int | true |
unsignedint | true |
long | true |
unsignedlong | true |
longlong(since C++11) | true |
unsignedlonglong(since C++11) | true |
float | true |
double | true |
longdouble | true |
[edit]Example
Run this code
#include <iostream>#include <limits>#include <type_traits> int main(){enum E{}; std::cout<<std::boolalpha<<std::numeric_limits<bool>::is_specialized<<'\n'<<std::numeric_limits<longlong>::is_specialized<<'\n'<<std::numeric_limits<std::true_type>::is_specialized<<'\n'<<std::numeric_limits<E>::is_specialized<<'\n';}
Possible output:
true true false false
[edit]See also
[static] | identifies integer types (public static member constant) |
[static] | identifies the IEC 559/IEEE 754 floating-point types (public static member constant) |
[static] | identifies exact types (public static member constant) |
[static] | identifies types that represent a finite set of values (public static member constant) |