কম্পিউটার টিউটোরিয়াল

C++-এ is_scalar টেমপ্লেট

এই আর্টিকেলে আমরা 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
  1. C++-এ is_final টেমপ্লেট

  2. C++-এ টাইপ কনভার্সন (Type Conversion)

  3. C++-এ টেমপ্লেট স্পেশালাইজেশন

  4. C++-এ টাইপ ইনফারেন্স (Type Inference)