Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

is_fundamental เทมเพลตใน C++


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่าง std::is_fundamental template ใน C++ STL

is_ basic คือเทมเพลตที่อยู่ภายใต้ไฟล์ส่วนหัว เทมเพลตนี้ใช้เพื่อตรวจสอบว่าประเภท T ที่กำหนดเป็นประเภทข้อมูลพื้นฐานหรือไม่

ประเภทพื้นฐานคืออะไร

ประเภทพื้นฐานคือประเภทที่มีอยู่แล้วภายในซึ่งมีการประกาศไว้แล้วในคอมไพเลอร์เอง เช่น int, float, char, double เป็นต้น ซึ่งเรียกอีกอย่างว่าประเภทข้อมูลในตัว

ประเภทข้อมูลทั้งหมดที่ผู้ใช้กำหนด เช่น class, enum, struct, การอ้างอิง หรือพอยน์เตอร์ ไม่ได้เป็นส่วนหนึ่งของประเภทพื้นฐาน

ไวยากรณ์

template <class T> is_fundamental;

พารามิเตอร์

เทมเพลตมีได้เฉพาะพารามิเตอร์ประเภท T และตรวจสอบว่าประเภทที่กำหนดเป็นประเภทคลาสสุดท้ายหรือไม่

คืนค่า

ส่งคืนค่าบูลีนเป็นค่าจริงหากประเภทที่กำหนดเป็นประเภทข้อมูลพื้นฐาน และเป็นเท็จหากประเภทที่กำหนดไม่ใช่ประเภทข้อมูลพื้นฐาน

ตัวอย่าง

Input: class final_abc;
   is_fundamental<final_abc>::value;
Output: False

Input: is_fundamental<int>::value;
Output: True

Input: is_fundamental<int*>::value;
Output: False

ตัวอย่าง

#include <iostream>
#include <type_traits>
using namespace std;
class TP {
   //TP Body
};
int main() {
   cout << boolalpha;
   cout << "checking for is_fundamental:";
   cout << "\nTP: "<< is_fundamental<TP>::value;
   cout << "\nchar :"<< is_fundamental<char>::value;
   cout << "\nchar& :"<< is_fundamental<char&>::value;
   cout << "\nchar* :"<< is_fundamental<char*>::value;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

checking for is_fundamental:
TP: false
char : true
char& : false
char* : false

ตัวอย่าง

#include <iostream>
#include <type_traits>
using namespace std;
int main() {
   cout << boolalpha;
   cout << "checking for is_fundamental:";
   cout << "\nint: "<< is_fundamental<int>::value;
   cout << "\ndouble :"<< is_fundamental<double>::value;
   cout << "\nint& :"<< is_fundamental<int&>::value;
   cout << "\nint* :"<< is_fundamental<int*>::value;
   cout << "\ndouble& :"<< is_fundamental<double&>::value;
   cout << "\ndouble* :"<< is_fundamental<double*>::value;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

checking for is_fundamental:
int: true
double : true
int& : false
int* : false
double& : false
double* : false