Computer >> Máy Tính >  >> Lập trình >> C ++

mẫu is_pod trong C ++

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của mẫu std ::is_pod trong C ++ STL.

is_ pod là một mẫu nằm trong tệp tiêu đề . Mẫu này được sử dụng để kiểm tra xem kiểu T đã cho có phải là kiểu POD (dữ liệu thuần túy cũ) hay không.

POD (Dữ liệu cũ thuần túy) là gì?

Loại dữ liệu cũ thuần túy (POD) là những loại cũng bằng ngôn ngữ C cũ. Các loại POD cũng bao gồm các loại vô hướng. Loại lớp POD là loại lớp vừa là loại bình thường (có thể được khởi tạo tĩnh) và bố cục tiêu chuẩn (là một cấu trúc dữ liệu đơn giản như struct và union).

Cú pháp

template <class T> is_pod;

Tham số

Mẫu chỉ có thể có tham số kiểu T và kiểm tra xem kiểu đã cho có phải là kiểu Dữ liệu cũ thuần túy hay không.

Giá trị trả về

Nó trả về giá trị Boolean, true nếu kiểu đã cho là Dữ liệu cũ thuần túy và false nếu kiểu đã cho không phải là Dữ liệu cũ thuần túy.

Ví dụ

Input: class final_abc{ final_abc(); };
   is_pod<final_abc>::value;
Output: False

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

Ví dụ

#include <iostream>
#include <type_traits>
using namespace std;
struct TP_1 {
   int var_1;
};
struct TP_2 {
   int var_2;
   private:
   int var_3;
};
struct TP_3 {
   virtual void dummy();
};
int main() {
   cout << boolalpha;
   cout << "checking for is_pod:";
   cout << "\nTP_1: " << is_pod<TP_1>::value;
   cout << "\nTP_2: " << is_pod<TP_2>::value;
   cout << "\nTP_3: " << is_pod<TP_3>::value;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

checking for is_pod:
TP_1: true
TP_2: false
TP_3: false

Ví dụ

#include <iostream>
#include <type_traits>
using namespace std;
class TP_1 {
   int var_1;
};
class TP_2 {
   int var_2;
   private:
   int var_3;
};
class TP_3 {
   virtual void dummy();
};
int main() {
   cout << boolalpha;
   cout << "checking for is_pod:";
   cout << "\nTP_1: " << is_pod<TP_1>::value;
   cout << "\nTP_2: " << is_pod<TP_2>::value;
   cout << "\nTP_3: " << is_pod<TP_3>::value;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

checking for is_pod:
TP_1: true
TP_2: true
TP_3: false