এই আর্টিকেলে আমরা C++ STL-এ std::is_signed টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
is_signed হলো একটি টেমপ্লেট যা <type_traits> হেডার ফাইলের অধীনে আসে। এই টেমপ্লেটটি ব্যবহার করা হয় দেওয়া টাইপ T একটি সাইনড টাইপ কিনা তা চেক করার জন্য।
সাইনড টাইপ কী?
এই হলো বেসিক আর্থমেটিক টাইপস, যেগুলোর সাথে সাইন মান থাকে। সব আর্থমেটিক ডেটা টাইপ হয় সাইনড অথবা আনসাইনড।
যখন আমরা নেগেটিভ মান দেখাতে চাই তখন সাইনড টাইপ ব্যবহার করি।
যেমন: -1 হলো সাইনড ইন্ট এবং -1.009 হলো সাইনড ফ্লোট।
ডিফল্টভাবে সব টাইপ সাইনড, সেগুলো আনসাইনড বানাতে হলে ডেটা টাইপের আগে unsigned প্রিফিক্স করতে হয়।
সিনট্যাক্স
template <class T> is_signed;
প্যারামিটারস
টেমপ্লেটটি শুধুমাত্র টাইপ T এর প্যারামিটার নিতে পারে, এবং চেক করে যে T একটি সাইনড টাইপ কিনা।
রিটার্ন ভ্যালু
এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া টাইপটি সাইনড টাইপ হলে true, এবং না হলে false।
উদাহরণ
Input: is_signed<int>::value; Output: True Input: is_signed<unsigned int>::value; Output: False
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
class TP { };
enum TP_1 : int {};
enum class TP_2 : int {};
int main() {
cout << boolalpha;
cout << "checking for is_signed:";
cout << "\nint:" << is_signed<int>::value;
cout << "\nTP:" << is_signed<TP>::value;
cout << "\nTP_1:" << is_signed<TP_1>::value;
cout << "\nTP_2:" << is_signed<TP_2>::value;
return 0;
}
আউটপুট
checking for is_signed: Int: true TP: false TP_1: false TP_2: false
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
int main() {
cout << boolalpha;
cout << "checking for is_signed:";
cout << "\nfloat:" << is_signed<float>::value;
cout << "\nSigned int:" << is_signed<signed int>::value;
cout << "\nUnsigned int:" << is_signed<unsigned int>::value;
cout << "\ndouble:" << is_signed<double>::value;
return 0;
}
আউটপুট
checking for is_signed: Float: true Signed int: true Unsigned int: false Double: true