এই আর্টিকেলে আমরা C++ STL-এ std::is_pod টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
is_pod হলো একটি টেমপ্লেট যা <type_traits> হেডার ফাইলের অধীনে আসে। এই টেমপ্লেটটি ব্যবহার করা হয় দেওয়া টাইপ T একটি POD (plain-old-data) টাইপ কিনা তা চেক করার জন্য।
POD (Plain old data) কী?
Plain old data (POD) টাইপস হলো সেসব টাইপ যেগুলো পুরনো C ভাষায়ও ছিল। POD টাইপসতে স্কেলার টাইপসও অন্তর্ভুক্ত। POD ক্লাস টাইপ হলো এমন একটি ক্লাস টাইপ যা দুইটি বৈশিষ্ট্য রাখে, ট্রিভিয়াল (যা স্ট্যাটিক্যালি ইনিশিয়ালাইজ করা যায়) এবং স্ট্যান্ডার্ড লে আউট (যা স্ট্রাক্ট এবং ইউনियनের মতো সিম্পল ডেটা স্ট্রাকচার)।
সিনট্যাক্স
template <class T> is_pod;
প্যারামিটারস
টেমপ্লেটটি শুধুমাত্র টাইপ T এর প্যারামিটার নিতে পারে, এবং চেক করে যে দেওয়া টাইপটি একটি Plain Old Data টাইপ কিনা।
রিটার্ন ভ্যালু
এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া টাইপটি Plain Old Data হলে true, এবং না হলে false।
উদাহরণ
Input: class final_abc{ final_abc(); }; is_pod<final_abc>::value; Output: False
Input: is_pod<int>::value; Output: True
উদাহরণ
#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;
}
আউটপুট
checking for is_pod: TP_1: true TP_2: false TP_3: false
উদাহরণ
#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;
}
আউটপুট
checking for is_pod: TP_1: true TP_2: true TP_3: false