std::is_integral

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() {}

# See also