std::is_integral (3) - Linux Manuals

std::is_integral: std::is_integral


std::is_integral - std::is_integral


Defined in header <type_traits>
template< class T > (since C++11)
struct is_integral;

Checks whether T is an integral type. Provides the member constant value which is equal to true, if T is the type bool, char, char8_t, char16_t, char32_t, wchar_t, short, int, long, long long, or any implementation-defined extended integer types, including any signed, unsigned, and cv-qualified variants. Otherwise, value is equal to false.

Template parameters

T - a type to check

Helper variable template

template< class T > (since C++17)
inline constexpr bool is_integral_v = is_integral<T>::value;

Inherited from std::integral_constant

Member constants

value true if T is an integral type , false otherwise
         (public static member constant)

Member functions

              converts the object to bool, returns value
operator bool (public member function)

operator() returns value
              (public member function)

Member types

Type Definition
value_type bool
type std::integral_constant<bool, value>


// Run this code

  #include <iostream>
  #include <type_traits>

  class A {};

  enum E : int {};

  template <class T>
  T f(T i)
      static_assert(std::is_integral<T>::value, "Integral required.");
      return i;

  int main()
      std::cout << std::boolalpha;
      std::cout << std::is_integral<A>::value << '\n';
      std::cout << std::is_integral<E>::value << '\n';
      std::cout << std::is_integral<float>::value << '\n';
      std::cout << std::is_integral<int>::value << '\n';
      std::cout << std::is_integral<bool>::value << '\n';
      std::cout << f(123) << '\n';



See also

is_integer identifies integer types
                  (public static member constant of std::numeric_limits<T>)

is_floating_point checks if a type is a floating-point type
                  (class template)

is_arithmetic checks if a type is an arithmetic type
                  (class template)

is_enum checks if a type is an enumeration type
                  (class template)