ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต std::is_scalar ใน C++ STL
is_scalar เป็นเทมเพลตที่อยู่ภายใต้ไฟล์ส่วนหัว
เทมเพลตนี้เป็นการรวมกันของ is_arithmetic, is_pointer, is_enum, is_member_pointer หรือ is_same และตรวจสอบว่าค่าใดค่าหนึ่งเป็นจริง ผลลัพธ์ของ is_scalar จะเป็นจริงด้วย
ประเภทสเกลาร์ใน C++ คืออะไร
ประเภทสเกลาร์คือวัตถุที่ไม่ใช่ประเภทคลาสหรือประเภทอาร์เรย์ ประเภทสเกลาร์เป็นประเภทที่มีฟังก์ชันในตัวสำหรับตัวดำเนินการเพิ่มเติมโดยไม่มีการโอเวอร์โหลด
ไวยากรณ์
template <class T> is_scalar;
พารามิเตอร์
เทมเพลตสามารถมีได้เฉพาะพารามิเตอร์ประเภท T และตรวจสอบว่าประเภทที่กำหนดเป็นประเภทสเกลาร์หรือไม่
คืนค่า
ส่งคืนค่าบูลีนเป็นค่าจริงหากประเภทที่กำหนดเป็นประเภทสเกลาร์ และเป็นเท็จหากประเภทที่กำหนดไม่ใช่ประเภทสเกลาร์
ตัวอย่าง
Input: is_scalar<int>::value; Output: True Input: is_scalar<A>::value; //assuming A is an object of a class. Output: False
ตัวอย่าง
#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; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
checking for is_scalar: int(TP::*): true int *: true bool: true int(int): false
ตัวอย่าง
#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; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
checking for is_scalar: TP : false TP_1: true int[10] false int&: false char&: false