ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต 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