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

Mẫu is_rvalue_reference trong C ++

Trong bài 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_rvalue_reference trong C ++ STL. Mẫu is_rvalue_reference trong C ++ được sử dụng để kiểm tra xem kiểu được xác định có phải là tham chiếu rvalue hay không.

rvalue là gì?

Giá trị là các giá trị nằm ở phía bên phải của toán tử gán. Rvalues ​​là giá trị

Tham chiếu rvalue là gì?

Tham chiếu giá trị được xác định bằng ký hiệu kép và (&&). Điều này được sử dụng để khởi tạo nó chỉ với giá trị rvalue.

Cú pháp

int&& a;

Cú pháp

template <class T> is_rvalue_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 rvalue hay không

Giá trị trả về

Nó trả về giá trị Boolean, true nếu giá trị đã cho là tham chiếu rvalue và false nếu giá trị đã cho không phải là tham chiếu rvalue hoặc khi chúng tôi đang tham chiếu đến một vị trí không xác định.

Ví dụ

Input: is_rvalue<int&>::value;
Output: False

Input: is_rvalue<int&&>::value;
Output: True

Ví dụ

#include <iostream>
#include <type_traits>
using namespace std;
int main() {
   cout << std::boolalpha;
   cout << "Checking for is_lvalue_reference: ";
   cout << "\nint : "<<is_rvalue_reference<int>::value;
   cout << "\nint& : "<< is_rvalue_reference<int&>::value;
   cout << "\nint&&: "<< is_rvalue_reference<int&&>::value;
   cout << "\nchar : "<<is_rvalue_reference<char>::value;
   cout << "\nchar& : "<< is_rvalue_reference<char&>::value;
   cout << "\nchar&&: "<< is_rvalue_reference<char&&>::value;
   cout << "\nfloat : "<<is_rvalue_reference<float>::value;
   cout << "\nfloat& : "<< is_rvalue_reference<float&>::value;
   cout << "\nfloat&&: "<< is_rvalue_reference<float&&>::value;
   cout << "\ndouble : "<<is_rvalue_reference<double>::value;
   cout << "\ndouble& : "<< is_rvalue_reference<double&>::value;
   cout << "\ndouble&&: "<< is_rvalue_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_rvalue_reference:
int : false
int& : false
int&&: ture
char : false
char& : false
char&&: ture
float : false
float& : false
float&&: ture
double: false
double : false
double&&: ture

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_rvalue_reference<TP>::value;
   cout << "\nTP& : "<< is_rvalue_reference<TP&>::value;
   cout << "\nTP&&: "<< is_rvalue_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_rvalue_reference:
TP class : false
TP& : false
TP&&: true