Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của mẫu std ::is_lvalue_reference trong C ++ STL.
Mẫu is_lvalue_reference trong C ++ được sử dụng để kiểm tra xem kiểu được xác định có phải là tham chiếu lvalue hay không.
Giá trị là gì?
Giá trị là các giá trị nằm bên trái của toán tử gán. Giá trị là các biểu thức chỉ vị trí bộ nhớ.
Tham chiếu Lvalue là gì?
Tham chiếu giá trị là một tham chiếu liên kết với một giá trị. Điều này rất giống với cách chúng ta sử dụng để tham chiếu đến một biến trong ngôn ngữ C ++ hoặc C truyền thống, tức là bằng cách sử dụng ký hiệu và (&) với chính biến để tham chiếu đến địa chỉ của nó.
Ví dụ
int& a;
Cú pháp
template <class T> is_lvalue_reference;
Tham số
Mẫu chỉ có thể có tham số kiểu T và kiểm tra xem kiểu đã cho có phải là tham chiếu giá trị hay không
Giá trị trả về
Nó trả về một giá trị Boolean, true nếu giá trị đã cho là tham chiếu lvalue và false nếu giá trị đã cho không phải là tham chiếu lvalue hoặc khi chúng ta đang tham chiếu đến một vị trí không xác định
Ví dụ
Input: is_lvalue<int &>::value; Output: True Input: is_lvalue<int>::value; Output: False
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Checking for is_lvalue_reference: TP class : false TP& : true TP&&: false
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
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