এই আর্টিকেলে আমরা C++ STL-এ std::is_fundamental টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
is_fundamental হলো একটি টেমপ্লেট যা <type_traits> হেডার ফাইলের অধীনে আসে। এই টেমপ্লেটটি ব্যবহার করা হয় দেওয়া টাইপ T একটি ফান্ডামেন্টাল ডেটা টাইপ কিনা তা চেক করার জন্য।
ফান্ডামেন্টাল টাইপ কী?
ফান্ডামেন্টাল টাইপস হলো বিল্ট-ইন টাইপস যেগুলো কম্পাইলারের নিজে থেকে ডিক্লেয়ার করা থাকে। যেমন int, float, char, double, ইত্যাদি। এগুলোকেও বিল্ট-ইন ডেটা টাইপ বলা হয়।
যে সব ডেটা টাইপ ব্যবহারকারী-ডিফাইনড যেমন: class, enum, struct, রেফারেন্স বা পয়েন্টার, সেগুলো ফান্ডামেন্টাল টাইপের অংশ নয়।
সিনট্যাক্স
template <class T> is_fundamental;
প্যারামিটারস
টেমপ্লেটটি শুধুমাত্র টাইপ T এর প্যারামিটার নিতে পারে, এবং চেক করে যে দেওয়া টাইপটি একটি ফাইনাল ক্লাস টাইপ কিনা।
রিটার্ন ভ্যালু
এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া টাইপটি ফান্ডামেন্টাল ডেটা টাইপ হলে true, এবং না হলে false।
উদাহরণ
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