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

Template is_lvalue_reference ใน C++

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

is_lvalue_reference template ใช้ตรวจสอบว่าชนิดที่กำหนดเป็น lvalue reference หรือไม่

Lvalue คืออะไร?

Lvalues คือค่าที่อยู่ซ้ายของ assignment operator เป็น expression ที่อ้างอิงตำแหน่งหน่วยความจำ

Lvalue Reference คืออะไร?

Lvalue reference เป็น reference ที่ bind กับ lvalue คล้ายกับการอ้างอิงตัวแปรใน C/C++ แบบดั้งเดิม โดยใช้สัญลักษณ์ & กับตัวแปรเพื่ออ้างอิงที่อยู่

ตัวอย่าง

int& a;

ไวยากรณ์

template <class T> is_lvalue_reference;

พารามิเตอร์

Template รับพารามิเตอร์ชนิด T เพียงอย่างเดียว ตรวจสอบว่าเป็น lvalue reference หรือไม่

ค่าที่คืน

คืนค่า Boolean: true หากเป็น lvalue reference, false หากไม่ใช่

ตัวอย่าง

Input: is_lvalue_reference<int&>::value; Output: true
Input: is_lvalue_reference<int>::value; Output: false

ตัวอย่างโค้ด 1

#include <iostream>
#include <type_traits>
using namespace std;

class TP { };

int main() {
    cout << 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

ตัวอย่างโค้ด 2

#include <iostream>
#include <type_traits>
using namespace std;

int main() {
    cout << 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