এই নিবন্ধে আমরা C++ STL-এ std::is_reference টেমপ্লেটের কাজ, বাক্য গঠন এবং উদাহরণ নিয়ে আলোচনা করব।
is_reference হল একটি টেমপ্লেট যা
এই টেমপ্লেটটি is_rvalue এবং is_lvalue এর সংমিশ্রণ এবং পরীক্ষা করে যে কোন একটি সত্য হলে, is_reference-এর ফলাফলও সত্য হবে।
C++ এ একটি রেফারেন্স কি?
একটি রেফারেন্স একটি উপনাম বা ইতিমধ্যে বিদ্যমান ভেরিয়েবলের অন্য নাম। একটি রেফারেন্স পয়েন্টার −
থেকে আলাদা- যেহেতু আমরা একটি রেফারেন্স নাল হিসাবে সেট করতে পারি না কিন্তু একটি পয়েন্টার একটি নাল পয়েন্টার হতে পারে৷
- একবার একটি রেফারেন্স একটি বস্তুর শুরু হলে এটি পরিবর্তন করা যাবে না। পয়েন্টার যে কোন সময় অন্য যে কোন বস্তুর দিকে নির্দেশ করা যেতে পারে।
- তৈরি করার সময় একটি রেফারেন্স সূচনা করতে হবে, যেখানে তৈরির পরে পয়েন্টার হিসেবে শুরু করা যেতে পারে।
একটি রেফারেন্স ঘোষণা করা যেতে পারে একটি ampersand(&) চিহ্ন ব্যবহার করে যাকে আমরা উল্লেখ করতে চাই তার পূর্ববর্তী পরিবর্তনশীল৷
সিনট্যাক্স
template <class T> is_reference;
পরামিতি
টেমপ্লেটটিতে শুধুমাত্র T টাইপের প্যারামিটার থাকতে পারে এবং প্রদত্ত টাইপটি একটি রেফারেন্স টাইপ কিনা তা পরীক্ষা করে দেখুন।
রিটার্ন মান
এটি একটি বুলিয়ান মান প্রদান করে, প্রদত্ত টাইপটি একটি রেফারেন্স টাইপ হলে সত্য এবং প্রদত্ত প্রকারটি একটি রেফারেন্স টাইপ না হলে মিথ্যা৷
উদাহরণ
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