এই আর্টিকেলে আমরা C++ STL-এ std::is_trivial টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
is_trivial হলো একটি টেমপ্লেট যা <type_traits> হেডার ফাইলের অধীনে আসে। এই টেমপ্লেটটি ব্যবহার করা হয় দেওয়া টাইপ T একটি ট্রিভিয়াল ক্লাস কিনা তা চেক করার জন্য।
C++-এ ট্রিভিয়াল ক্লাস টাইপ কী?
আমরা একটি টাইপকে ট্রিভিয়াল টাইপ বলি, যখন এর ডেটা একটি সংলগ্ন উপায়ে সংরক্ষিত থাকে এবং যা শুধুমাত্র স্ট্যাটিক ডিফল্ট ইনিশিয়ালাইজেশন গ্রহণ করে। এতে যেকোনো টাইপের অ্যারে, ক্লাস এবং স্কেলার টাইপ অন্তর্ভুক্ত থাকতে পারে।
ট্রিভিয়াল ক্লাস হলো এমন একটি ক্লাস যা ট্রিভিয়ালি ডিফল্ট কনস্ট্রাক্টেড এবং ট্রিভিয়ালি কপি করা যায়। একটি ক্লাসকে ট্রিভিয়াল বানানোর সময় কিছু বিষয় খেয়াল রাখতে হয় -
- এতে কোনো ভার্চুয়াল মেম্বার বা ভার্চুয়াল বেস ক্লাস থাকা উচিত নয়।
- কোনো নন-স্ট্যাটিক মেম্বার থাকা উচিত নয়।
- নন-স্ট্যাটিক মেম্বারের সাথে কোনো বেস ক্লাস থাকা উচিত নয়।
সিনট্যাক্স
template <class T> is_trivial;
প্যারামিটারস
টেমপ্লেটটি শুধুমাত্র টাইপ T এর প্যারামিটার নিতে পারে, এবং চেক করে যে দেওয়া টাইপটি একটি ট্রিভিয়াল টাইপ ক্লাস কিনা।
রিটার্ন ভ্যালু
এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া টাইপটি ট্রিভিয়াল ক্লাস টাইপ হলে true, এবং না হলে false।
উদাহরণ
Input: class A {}; class B { B() {} }; class D { virtual void fn() {} }; cout<<"A: "<<is_trivial<A>; cout<<"B: "<<is_trivial<B>; cout<<"D: "<<is_trivial<D>; Output: A: True B: False D: False
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
class TP_1 { };
class TP_2 {
TP_2(){
}
};
class TP_3 : TP_2 { };
class TP_4 {
virtual void dummy() {
}
};
int main() {
std::cout << std::boolalpha; // বুলিয়ান টাইপে মান রিটার্ন করে
std::cout << "TP_1: " << std::is_trivial<TP_1>::value << endl;
std::cout << "TP_2: " << std::is_trivial<TP_2>::value << endl;
std::cout << "TP_3: " << std::is_trivial<TP_3>::value << endl;
std::cout << "TP_4: " << std::is_trivial<TP_4>::value << endl;
return 0;
}
আউটপুট
TP_1: true TP_2: false TP_3: false TP_4: false