এই আর্টিকেলে আমরা C++ STL-এ std::is_lvalue_reference টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
C++-এ is_lvalue_reference টেমপ্লেটটি ব্যবহার করা হয় ডিফাইন করা টাইপটি একটি lvalue রেফারেন্স কিনা তা চেক করার জন্য।
lvalue কী?
Lvalues হলো মানগুলো যা অ্যাসাইনমেন্ট অপারেটরের বাম পাশে থাকে। Lvalues হলো এক্সপ্রেশন যা মেমরি লোকেশনকে রেফার করে।
Lvalue রেফারেন্স কী?
Lvalue রেফারেন্স হলো একটি রেফারেন্স যা একটি lvalue-কে বাইন্ড করে। এটি ঐতিহ্যগত C++ বা C ভাষায় আমরা ভেরিয়েবলকে কীভাবে রেফার করতাম তার সাথে খুব মিলত, অর্থাৎ ভেরিয়েবলের সাথে অ্যাম্পারস্যান্ড সিম্বল (&) ব্যবহার করে তার ঠিকানা রেফার করতে।
উদাহরণ
int& a;
সিনট্যাক্স
template <class T> is_lvalue_reference;
প্যারামিটারস
টেমপ্লেটটি শুধুমাত্র একটি প্যারামিটার টাইপ T নিতে পারে, এবং চেক করে যে দেওয়া টাইপটি একটি lvalue রেফারেন্স কিনা।
রিটার্ন ভ্যালু
এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া মানটি lvalue রেফারেন্স হলে true, এবং দেওয়া মানটি lvalue রেফারেন্স না হলে অথবা অজানা লোকেশন রেফারেন্স করার সময় false।
উদাহরণ
Input: is_lvalue<int &>::value; Output: True Input: is_lvalue<int>::value; Output: False
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
class TP { };
int main() {
cout << std::boolalpha;
cout << "Checking for is_lvalue_reference: ";
cout << "\nTP class : " << is_lvalue_reference<TP>::value;
cout << "\nTP& : " << is_lvalue_reference<TP&>::value;
cout << "\nTP&&: " << is_lvalue_reference<TP&&>::value;
return 0;
}
আউটপুট
Checking for is_lvalue_reference: TP class : false TP& : true TP&&: false
উদাহরণ
#include <iostream>
#include <type_traits>
using namespace std;
int main() {
cout << std::boolalpha;
cout << "Checking for is_lvalue_reference: ";
cout << "\nint : " << is_lvalue_reference<int>::value;
cout << "\nint& : " << is_lvalue_reference<int&>::value;
cout << "\nint&&: " << is_lvalue_reference<int&&>::value;
cout << "\nchar : " << is_lvalue_reference<char>::value;
cout << "\nchar& : " << is_lvalue_reference<char&>::value;
cout << "\nchar&&: " << is_lvalue_reference<char&&>::value;
cout << "\nfloat : " << is_lvalue_reference<float>::value;
cout << "\nfloat& : " << is_lvalue_reference<float&>::value;
cout << "\nfloat&&: " << is_lvalue_reference<float&&>::value;
cout << "\ndouble : " << is_lvalue_reference<double>::value;
cout << "\ndouble& : " << is_lvalue_reference<double&>::value;
cout << "\ndouble&&: " << is_lvalue_reference<double&&>::value;
return 0;
}
আউটপুট
Checking for is_lvalue_reference: int : false int& : true int&&: false char : false char& : true char&&: false float : false float& : true float&&: false double: false double : true double&&: false