std::is_integral template in C++ with examples

Fundamental data types in C++ can be broadly divided into three categories: Integral, floating point and void type. An integral data type can be one of the following:

  • int types- short, long, long long(signed and unsigned)
  • char, wchar_t, char16_t, char32_t(signed and unsigned)
  • bool

std::is_integral is a template that inherits from std::integral_constant and identifies whether a template is an integral data type or not. As it inherits from std::integral_constant, it has access to it’s public member constants and member functions. The member constant that tell us whether a template is an integral data type is std::is_integral::value. This member constant returns a bool value which is true if the template is an integral data type(any one of the aforementioned) and false if otherwise.

Let’s take a look at some examples and the syntax of using this template-

#include <type_traits>
using namespace std;
template <typename T> 
void isintegral(T a){
    cout<<boolalpha;
    cout<<is_integral<T>::value<<endl;
}
int main(){
    int a=1;
    char b='h';
    long double c=3.3333;
    double d=1.23;
    bool e=true;
    float f=0.22;
    
    isintegral(a);
    isintegral(b);
    isintegral(c);
    isintegral(d);
    isintegral(e);
    isintegral(f);
    
    return 0;
}

Output

true
true
false
false
true
false

As you can see, the output for variables a,b and e is true as they are all integral data types: int, char and bool. On the contrary, the output is false for variables c,d and f as they are all non-integral data types: long double, double and float(they come under floating point data types).

Also read:

Leave a Reply

Your email address will not be published. Required fields are marked *