std::is_integral
Min standard notice:
Header: <type_traits>
std::is_integral is a UnaryTypeTrait.
# Declarations
template< class T >
struct is_integral;
(since C++11)
# Example
#include <type_traits>
static_assert
(
std::is_integral_v<float> == false &&
std::is_integral_v<int*> == false &&
std::is_integral_v<int> == true &&
std::is_integral_v<const int> == true &&
std::is_integral_v<bool> == true &&
std::is_integral_v<char> == true
);
class A {};
static_assert(std::is_integral_v<A> == false);
struct B { int x:4; };
static_assert(std::is_integral_v<B> == false);
using BF = decltype(B::x); // bit-field's type
static_assert(std::is_integral_v<BF> == true);
enum E : int {};
static_assert(std::is_integral_v<E> == false);
template <class T>
constexpr T same(T i)
{
static_assert(std::is_integral<T>::value, "Integral required.");
return i;
}
static_assert(same('"') == 042);
int main() {}