ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่าง std::is_arithmetic template ใน C++ STL
เทมเพลต is_arithmetic ช่วยตรวจสอบว่าคลาส T ที่กำหนดเป็นประเภทเลขคณิตหรือไม่
ประเภทเลขคณิตคืออะไร
ประเภทเลขคณิตประกอบด้วยสองประเภทคือ
-
ประเภทอินทิกรัล − ในที่นี้ เรากำหนดจำนวนเต็ม ต่อไปนี้เป็นประเภทของอินทิกรัล -
- ถ่าน
- บูล
- int
- ยาว
- สั้น
- ยาวยาว
- wchar_t
- char16_t
- char32_t
-
ประเภทจุดลอยตัว − สิ่งเหล่านี้สามารถเก็บชิ้นส่วนที่เป็นเศษส่วนได้ ต่อไปนี้เป็นประเภทของจุดลอยตัว
- ลอย
- ดับเบิ้ล
- ยาวสองเท่า
ดังนั้น template is_arithmatic จะตรวจสอบว่าประเภทที่กำหนด T เป็นประเภทเลขคณิตหรือไม่และคืนค่าเป็นจริงหรือเท็จตามลำดับ
ไวยากรณ์
template <class T> is_arithmetic;
พารามิเตอร์
เทมเพลตสามารถมีพารามิเตอร์ประเภท T ได้เพียงตัวเดียวเท่านั้น และตรวจสอบว่าพารามิเตอร์นั้นเป็นประเภทเลขคณิตหรือไม่
คืนค่า
ฟังก์ชันนี้ส่งคืนค่าประเภทบูลที่สามารถเป็นจริงหรือเท็จ คืนค่า จริง หากประเภทที่กำหนดเป็นเลขคณิต และเป็นเท็จ หากประเภทนั้นไม่ใช่เลขคณิต
ตัวอย่าง
Input: is_arithmetic<bool>::value; Output: True Input: is_arithmetic<class_a>::value; Output: false
ตัวอย่าง
#include <iostream> #include <type_traits> using namespace std; class TP { }; int main() { cout << boolalpha; cout << "checking for is_arithmetic template:"; cout << "\nTP class : "<< is_arithmetic<TP>::value; cout << "\n For Bool value: "<< is_arithmetic<bool>::value; cout << "\n For long value : "<< is_arithmetic<long>::value; cout << "\n For Short value : "<< is_arithmetic<short>::value; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
checking for is_arithmetic template: TP class : false For Bool value: true For long value : true For Short value : true
ตัวอย่าง
#include <iostream> #include <type_traits> using namespace std; int main() { cout << boolalpha; cout << "checking for is_arithmetic template:"; cout << "\nInt : "<< is_arithmetic<int>::value; cout << "\nchar : "<< is_arithmetic<char>::value; cout << "\nFloat : "<< is_arithmetic<float>::value; cout << "\nDouble : "<< is_arithmetic<double>::value; cout << "\nInt *: "<< is_arithmetic<int*>::value; cout << "\nchar *: "<< is_arithmetic<char*>::value; cout << "\nFloat *: "<< is_arithmetic<float*>::value; cout << "\nDouble *: "<< is_arithmetic<double*>::value; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
checking for is_arithmetic template: Int : true Char : true Float : true Double : true Int * : float Char *: float Float *: float Double *: float