Computer >> Máy Tính >  >> Lập trình >> C ++

is_lvalue_reference Template trong C ++

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