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

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

এই আর্টিকেলে আমরা C++ STL-এ std::is_reference টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।

is_reference হলো একটি টেমপ্লেট যা <type_traits> হেডার ফাইলের অধীনে আসে। এই টেমপ্লেটটি ব্যবহার করা হয় দেওয়া টাইপ T একটি রেফারেন্স টাইপ কিনা তা চেক করার জন্য।

এই টেমপ্লেটটি is_rvalue এবং is_lvalue-এর সংমিশ্রণ এবং চেক করে যে উভয়ের যেকোনো একটি সত্য হলে is_reference-র ফলাফলও সত্য হবে।

C++-এ রেফারেন্স কী?

একটি রেফারেন্স হলো ইতিমধ্যে বিদ্যমান একটি ভেরিয়েবলের উপনাম বা অন্য একটি নাম। একটি রেফারেন্স পয়েন্টারের থেকে আলাদা -

  • রেফারেন্স কখনও null সেট করা যাবে না কিন্তু পয়েন্টার হতে পারে null পয়েন্টার।
  • একবার একটি রেফারেন্স কোনো অবজেক্টের সাথে ইনিশিয়ালাইজ হলে সেটি পরিবর্তন করা যায় না। পয়েন্টার যেকোনো সময় অন্য অবজেক্টের দিকে নির্দেশ করতে পারে।
  • একটি রেফারেন্স তৈরি হওয়ার সাথে সাথে ইনিশিয়ালাইজ করা উচিত, যেখানে পয়েন্টার তৈরি হওয়ার পরেও ইনিশিয়ালাইজ করা যায়।

একটি রেফারেন্স অ্যাম্পারস্যান্ড (&) সিম্বল ব্যবহার করে ডিক্লেয়ার করা হয়, যেটি আমরা রেফার করতে চাই সেটির আগে।

সিনট্যাক্স

template <class T> is_reference;

প্যারামিটারস

টেমপ্লেটটি শুধুমাত্র একটি প্যারামিটার টাইপ T নিতে পারে, এবং চেক করে যে দেওয়া টাইপটি রেফারেন্স টাইপ কিনা।

রিটার্ন ভ্যালু

এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া টাইপটি রেফারেন্স টাইপ হলে true, এবং রেফারেন্স টাইপ না হলে false।

উদাহরণ

Input: is_reference<int>::value; Output: False
Input: is_reference<int&>::value; Output: True

উদাহরণ

#include <iostream>
#include <type_traits>
using namespace std;

class TP { };

int main() {
    cout << boolalpha;
    cout << "Checking for is_reference: ";
    cout << "\n class TP : " << is_reference<TP>::value;
    cout << "\n class TP&: " << is_polymorphic<TP&>::value;
    cout << "\n class TP&&: " << is_polymorphic<TP&&>::value;
    return 0;
}

আউটপুট

Checking for is_reference:
class TP : false
class TP&: false
class TP&&: false

উদাহরণ

#include <iostream>
#include <type_traits>
using namespace std;

int main() {
    cout << boolalpha;
    cout << "Checking for is_reference: ";
    cout << "\n int: " << is_reference<int>::value;
    cout << "\n int&: " << is_reference<int&>::value;
    cout << "\n int&&: " << is_reference<int&&>::value;
    // char
    cout << "\n char: " << is_reference<char>::value;
    cout << "\n char&: " << is_reference<char&>::value;
    cout << "\n char&&: " << is_reference<char&&>::value;
    // float
    cout << "\n float: " << is_reference<float>::value;
    cout << "\n float&: " << is_reference<float&>::value;
    cout << "\n float&&: " << is_reference<float&&>::value;
    // double
    cout << "\n double: " << is_reference<double>::value;
    cout << "\n double&: " << is_reference<double&>::value;
    cout << "\n double&&: " << is_reference<double&&>::value;
    return 0;
}

আউটপুট

Checking for is_reference:
int: false
int&: true
int&&: true
char: false
char&: true
char&&: true
float: false
float&: true
float&&: true
double: false
double&: true
double&&: true
  1. C++-এ টেমপ্লেট মেটাপ্রোগ্রামিং

  2. C++-এ fabs() ফাংশন

  3. C++-এ expm1() ফাংশন

  4. C++-এ log1p() ফাংশন