is_scalar template in C++
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
Please Login to comment...