is_scalar template in C++
Last Updated :
19 Nov, 2018
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:
#include <iostream>
#include <type_traits>
using namespace std;
class GFG1 {
};
enum class GFG2 {
var1,
var2,
var3,
var4
};
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:
#include <iostream>
#include <type_traits>
using namespace std;
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:
#include <iostream>
#include <type_traits>
using namespace std;
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
Share your thoughts in the comments
Please Login to comment...