rvalue, lvalue, xvalue, glvalue, prvalue trong C++ là gì?
- lvalue có địa chỉ chương trình có thể truy cập. Ví dụ: tên biến (kể cả const), phần tử mảng, hàm trả về lvalue reference, bit-field, union, thành viên lớp.
- xvalue (eXpiring value) không có địa chỉ nhưng có thể dùng để khởi tạo rvalue reference, cung cấp quyền truy cập. Ví dụ: hàm trả về rvalue reference, chỉ số mảng, v.v.
- glvalue (generalized lvalue) là lvalue hoặc xvalue.
- rvalue (theo truyền thống vì xuất hiện bên phải phép gán) là xvalue, đối tượng tạm hoặc con của nó, hoặc giá trị không liên kết với đối tượng.
- prvalue (pure rvalue) không có địa chỉ truy cập được. Ví dụ: literal, hàm trả về kiểu non-reference.