Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

is_lvalue_reference เทมเพลตใน C++


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต std::is_lvalue_reference ใน C++ STL

เทมเพลต is_lvalue_reference ใน C ++ ใช้เพื่อตรวจสอบว่าประเภทที่กำหนดเป็นการอ้างอิง lvalue หรือไม่

ค่า lvalue คืออะไร

Lvalues ​​คือค่าที่อยู่ทางด้านซ้ายของตัวดำเนินการกำหนด Lvalues ​​คือนิพจน์ที่อ้างถึงตำแหน่งหน่วยความจำ

การอ้างอิง Lvalue คืออะไร

การอ้างอิง Lvalue คือข้อมูลอ้างอิงที่ผูกกับค่า lvalue สิ่งนี้คล้ายกันมากกับวิธีที่เราใช้อ้างถึงตัวแปรในภาษา C++ หรือ C ดั้งเดิม เช่น โดยใช้สัญลักษณ์แอมเพอร์แซนด์ (&) กับตัวแปรเพื่ออ้างถึงที่อยู่ของตัวแปรนั้นเอง

ตัวอย่าง

int& a;

ไวยากรณ์

template <class T> is_lvalue_reference;

พารามิเตอร์

เทมเพลตมีได้เฉพาะพารามิเตอร์ประเภท T และตรวจสอบว่าประเภทที่กำหนดเป็นข้อมูลอ้างอิง lvalue หรือไม่

คืนค่า

ส่งคืนค่าบูลีน เป็นจริง หากค่าที่กำหนดคือการอ้างอิง lvalue และเป็นเท็จ หากค่าที่ระบุไม่ใช่การอ้างอิง lvalue หรือเมื่อเราอ้างถึงตำแหน่งที่ไม่รู้จัก

ตัวอย่าง

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