এই আর্টিকেলে আমরা C++ STL-এ std::is_scalar টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
is_scalar হলো একটি টেমপ্লেট যা <type_traits> হেডার ফাইলের অধীনে আসে। এই টেমপ্লেটটি ব্যবহার করা হয় দেওয়া টাইপ T একটি স্কেলার টাইপ কিনা তা চেক করার জন্য।
এই টেমপ্লেটটি is_arithmetic, is_pointer, is_enum, is_member_pointer বা is_same-এর সংমিশ্রণ এবং চেক করে যে উভয়ের যেকোনো একটি সত্য হলে is_scalar-র ফলাফলও সত্য হবে।
C++-এ স্কেলার টাইপ কী?
একটি স্কেলার টাইপ হলো সেই অবজেক্ট যা না ক্লাস টাইপ এবং না অ্যারে টাইপ। একটি স্কেলার টাইপ হলো এমন একটি টাইপ যাতে বিল্ট-ইন ফাংশন্যালিটি থাকে অ্যাডিশন অপারেটরের জন্য যেকোনো ওভারলোডিং ছাড়াই।
সিনট্যাক্স
template <class T> is_scalar;
প্যারামিটারস
টেমপ্লেটটি শুধুমাত্র একটি প্যারামিটার টাইপ T নিতে পারে, এবং চেক করে যে দেওয়া টাইপটি একটি স্কেলার টাইপ কিনা।
রিটার্ন ভ্যালু
এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া টাইপটি স্কেলার টাইপ হলে true, এবং না হলে false।
উদাহরণ
Input: is_scalar<int>::value; Output: True Input: is_scalar<A>::value; // ধরে নিচ্ছি A হলো একটি ক্লাসের অবজেক্ট। Output: False
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
int main() {
class TP {
};
cout << boolalpha;
cout << "checking for is_scalar: ";
cout << "\nint(TP::*): " << is_scalar<int(TP::*)>::value;
cout << "\nint *: " << is_scalar<int*>::value;
cout << "\nbool: " << is_scalar<bool>::value;
cout << "\nint(int): " << is_scalar<int(int)>::value;
return 0;
}
আউটপুট
checking for is_scalar: int(TP::*): true int *: true bool: true int(int): false
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
int main() {
class TP {
};
enum class TP_1 {
var_1,
var_2,
var_3,
var4
};
cout << boolalpha;
cout << "checking for is_scalar: ";
cout << "\nTP : " << is_scalar<int(TP)>::value;
cout << "\nTP_1: " << is_scalar<TP_1>::value;
cout << "\nint[10] " << is_scalar<int[10]>::value;
cout << "\nint&: " << is_scalar<int&>::value;
cout << "\nchar&: " << is_scalar<char&>::value;
return 0;
}
আউটপুট
checking for is_scalar: TP : false TP_1: true int[10] false int&: false char&: false