এই আর্টিকেলে আমরা C++ STL-এ std::is_pointer টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
is_pointer হলো একটি টেমপ্লেট যা <type_traits> হেডার ফাইলের অধীনে আসে। এই টেমপ্লেটটি ব্যবহার করা হয় দেওয়া টাইপ T একটি পয়েন্টার টাইপ কিনা তা চেক করার জন্য।
পয়েন্টার কী?
পয়েন্টারগুলো নন-স্ট্যাটিক টাইপস যারা অন্য একটি টাইপের অ্যাড্রেস ধারণ করে বা অন্য কথায় মেমরি পুলের কিছু মেমরি লোকেশনকে নির্দেশ করে। একটি এস্টেরিস্ক (*) দিয়ে আমরা একটি পয়েন্টার ডিফাইন করি এবং যখন আমরা সেই স্পেসিফিক মেমরিকে রেফার করতে চাই যা পয়েন্টারটি ধারণ করছে তখনও আমরা এস্টেরিস্ক (*) ব্যবহার করি।
সেগুলো এমন টাইপ যেগুলো null হিসেবে ইনিশিয়ালাইজ করা যায় এবং প্রয়োজনে পরে টাইপ পরিবর্তন করা যায়।
সিনট্যাক্স
template <class T> is_pointer;
প্যারামিটারস
টেমপ্লেটটি শুধুমাত্র একটি প্যারামিটার টাইপ T নিতে পারে, এবং চেক করে যে দেওয়া টাইপটি একটি পয়েন্টার কিনা।
রিটার্ন ভ্যালু
এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া টাইপটি পয়েন্টার ভেরিয়েবল হলে true, এবং না হলে false।
উদাহরণ
Input: is_pointer<int>::value; Output: False Input: is_pointer<int*>::value; Output: True
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
class TP { };
int main() {
cout << boolalpha;
cout << "checking for is_pointer:";
cout << "\nTP: " << is_pointer<TP>::value;
cout << "\nTP*: " << is_pointer<TP*>::value;
cout << "\nTP&: " << is_pointer<TP&>::value;
cout << "\nNull Pointer: " << is_pointer<nullptr_t>::value;
return 0;
}
আউটপুট
checking for is_pointer: TP: false TP*: true TP&: false Null Pointer: false
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
int main() {
cout << boolalpha;
cout << "checking for is_pointer:";
cout << "\nint: " << is_pointer<int>::value;
cout << "\nint*: " << is_pointer<int*>::value;
cout << "\nint **: " << is_pointer<int **>::value;
cout << "\nint ***: " << is_pointer<int ***>::value;
return 0;
}
আউটপুট
checking for is_pointer: int: false int*: true Int **: true Int ***: true