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

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


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

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

ประเภท void ใน C++ คืออะไร

ในคำง่ายๆ void หมายถึง "ว่างเปล่า" หรือ "ไม่มีอะไร" เมื่อเราประกาศฟังก์ชันเป็นโมฆะ จะถือว่าฟังก์ชันนี้ไม่ส่งคืนสิ่งใด

นอกจากนี้เรายังประกาศตัวชี้เป็นโมฆะซึ่งควรจะปล่อยไว้โดยไม่ระบุ อย่างไรก็ตาม จะต้องอ้างอิงถึงตัวแปรอื่นในประเภทอื่น ก่อนที่ตัวชี้จะถูกยกเลิกการอ้างอิง พวกเขาสามารถชี้ไปที่วัตถุใด ๆ ก็ได้โดยไม่คำนึงถึงประเภทของวัตถุ ดังนั้นจึงมีประโยชน์มากสำหรับโปรแกรมเมอร์

ไวยากรณ์

template <class T>is_void;

พารามิเตอร์

เทมเพลตสามารถมีได้เฉพาะพารามิเตอร์ประเภท T และตรวจสอบว่า T เป็นประเภทโมฆะหรือไม่

คืนค่า

ส่งคืนค่าบูลีนเป็น true หากประเภทที่กำหนดเป็นประเภท void และ false หากประเภทที่กำหนดไม่ใช่ประเภท void

ตัวอย่าง

Input: is_void<void>::value;
Output: True

Input: is_void<int>::value;
Output: False

ตัวอย่าง

#include <iostream>
#include <type_traits>
using namespace std;
int main() {
   cout << boolalpha;
   cout << "checking for is_void:";
   cout << "\nvoid:" << is_void<void>::value;
   cout << "\nconst void:" << is_void<const void>::value;
   cout << "\nint:" << is_void<int>::value;
   cout << "\nchar:" << is_void<char>::value;
   return 0;
}

ผลลัพธ์

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

checking for is_void:
Void: true
Const void: true
Int: false
Char: false

ตัวอย่าง

#include <iostream>
#include <type_traits>
using namespace std;
int main() {
   cout << boolalpha;
   cout << "checking for is_void:";
   cout << "\nDouble:" << is_void<double>::value;
   cout << "\nFloat:" << is_void<float>::value;
   cout << "\nvolatile void:" << is_void<volatile void>::value;
   cout << "\nconst volatile void:" << is_void<const volatile void>::value;
   return 0;
}

ผลลัพธ์

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

checking for is_void:
Double: false
Float: false
Volatile void: true
Cost volatile void: true