Open In App

is_scalar template in C++

Last Updated : 19 Nov, 2018
Improve
Improve
Like Article
Like
Save
Share
Report

The std::is_scalar template of C++ STL is used to check whether the given type is a scalar type or not. It returns a boolean value showing the same.

Syntax:

template < class T > struct is_scalar;

Parameter: This template accepts a single parameter T (Trait class) to check whether T is a scalar type or not.

Return Value: This template returns a boolean value as shown below:

  • True: if the type is a scalar type.
  • False: if the type is a non-scalar type.

Below programs illustrate the std::is_scalar template in C++ STL:

Program 1:




// C++ program to illustrate
// std::is_scalar template
  
#include <iostream>
#include <type_traits>
using namespace std;
  
class GFG1 {
};
  
enum class GFG2 {
    var1,
    var2,
    var3,
    var4
};
  
// main program
int main()
{
  
    cout << boolalpha;
    cout << "is_scalar:"
         << endl;
    cout << "GFG1: "
         << is_scalar<GFG1>::value
         << endl;
    cout << "GFG2: "
         << is_scalar<GFG2>::value
         << endl;
    cout << "int[10]: "
         << is_scalar<int[10]>::value
         << endl;
    cout << "int &: "
         << is_scalar<int&>::value
         << endl;
    cout << "char: "
         << is_scalar<char>::value
         << endl;
  
    return 0;
}


Output:

is_scalar:
GFG1: false
GFG2: true
int[10]: false
int &: false
char: true

Program 2:




// C++ program to illustrate
// std::is_scalar template
  
#include <iostream>
#include <type_traits>
using namespace std;
  
// main program
int main()
{
    class gfg {
    };
  
    cout << boolalpha;
    cout << "is_scalar:"
         << endl;
    cout << "int(gfg::*): "
         << is_scalar<int(gfg::*)>::value
         << endl;
    cout << "int *: "
         << is_scalar<int*>::value
         << endl;
    cout << "bool: "
         << is_scalar<bool>::value
         << endl;
    cout << "int(int): "
         << is_scalar<int(int)>::value
         << endl;
    return 0;
}


Output:

is_scalar:
int(gfg::*): true
int *: true
bool: true
int(int): false

Program 3:




// C++ program to illustrate
// std::is_scalar template
  
#include <iostream>
#include <type_traits>
using namespace std;
  
// main program
union GFG {
    int var1;
    float var2;
};
  
int main()
{
  
    cout << boolalpha;
    cout << "is_scalar:"
         << endl;
    cout << "GFG:"
         << is_scalar<GFG>::value
         << endl;
    cout << "float: "
         << is_scalar<float>::value
         << endl;
    cout << "double: "
         << is_scalar<double>::value
         << endl;
    cout << "char: "
         << is_scalar<char>::value
         << endl;
    cout << "nullptr_t: "
         << is_scalar<std::nullptr_t>::value
         << endl;
  
    return 0;
}


Output:

is_scalar:
GFG:false
float: true
double: true
char: true
nullptr_t: true


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads