Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của mẫu std ::is_scalar trong C ++ STL.
is_scalar là một mẫu nằm trong tệp tiêu đề
Mẫu này là sự kết hợp của is_arithmetic, is_pointer, is_enum, is_member_pointer hoặc is_same và kiểm tra xem nếu một trong hai là true thì kết quả của is_scalar cũng sẽ đúng.
Kiểu vô hướng trong C ++ là gì?
Kiểu vô hướng là đối tượng không phải là kiểu lớp cũng như kiểu mảng. Kiểu vô hướng là kiểu có chức năng sẵn có cho toán tử bổ sung mà không có bất kỳ quá tải nào.
Cú pháp
template <class T> is_scalar;
Tham số
Mẫu chỉ có thể có tham số kiểu T và kiểm tra xem kiểu đã cho có phải là kiểu vô hướng hay không.
Giá trị trả về
Nó trả về một giá trị Boolean, true nếu kiểu đã cho là kiểu vô hướng và false nếu kiểu đã cho không phải là kiểu vô hướng.
Ví dụ
Input: is_scalar<int>::value; Output: True Input: is_scalar<A>::value; //assuming A is an object of a class. Output: False
Ví dụ
#include <iostream> #include <type_traits> using namespace std; int main() { class TP { }; cout << boolalpha; cout << "checking for is_scalar: "; cout << "\nint(TP::*): "<< is_scalar<int(TP::*)>::value; cout << "\nint *: "<< is_scalar<int*>::value; cout << "\nbool: "<< is_scalar<bool>::value; cout << "\nint(int): "<< is_scalar<int(int)>::value; return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
checking for is_scalar: int(TP::*): true int *: true bool: true int(int): false
Ví dụ
#include <iostream> #include <type_traits> using namespace std; int main() { class TP { }; enum class TP_1 { var_1, var_2, var_3, var4 }; cout << boolalpha; cout << "checking for is_scalar: "; cout << "\nTP : "<< is_scalar<int(TP)>::value; cout << "\nTP_1: "<< is_scalar<TP_1>::value; cout << "\nint[10] "<< is_scalar<int[10]>::value; cout << "\nint&: "<< is_scalar<int&>::value; cout << "\nchar&: "<< is_scalar<char&>::value; return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
checking for is_scalar: TP : false TP_1: true int[10] false int&: false char&: false