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