ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต 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