Tôi cố gắng hiểu các loại biểu hiện của C ++ và càng đọc, tôi càng bối rối, vì tôi thấy bản nháp C ++ rất khó tiêu hóa và do đó thích các tài nguyên khác nhưng chúng mâu thuẫn với nhau hoặc không tính đến điều đó từ ngữ và định nghĩa giữa các phiên bản C ++ thay đổi rất nhiều.
Trong phần sau tôi đề cập đến các bản nháp sau:
- C ++ 11 [ n3690 ] (bản thảo cuối cùng)
- C ++ 17 [ n4659 ] (bản thảo cuối cùng)
- C ++ 20 [ n4835 ] (dự thảo hiện tại)
C++11
3.10 Giá trị và giá trị... Một giá trị (giá trị thuần túy rvalue) là một giá trị không phải là giá trị x. [Ví dụ: Kết quả của việc gọi một hàm có kiểu trả về không phải là tham chiếu là một giá trị. Giá trị của một nghĩa đen như 12, 7.3e5 hoặc true cũng là một giá trị. - ví dụ cuối]
C++17
3.10 Giá trị và giá trị... Giá trị là một biểu thức có đánh giá khởi tạo một đối tượng hoặc trường bit hoặc tính giá trị của toán hạng của toán tử, như được chỉ định bởi bối cảnh xuất hiện.
C++20
7.2.1 Danh mục giá trị *... Giá trị là một biểu thức có đánh giá khởi tạo một đối tượng hoặc trường bit hoặc tính giá trị của toán hạng của toán tử, như được chỉ định bởi ngữ cảnh xuất hiện hoặc biểu thức có loại cv void.
Tôi sẽ hiểu các thay đổi từ ngữ, và một số điều chỉnh được thực hiện, nhưng đối với tôi toàn bộ thay đổi định nghĩa. Ai đó có thể giúp tôi hiểu điều này? Chẳng hạn, tại sao câu bị loại bỏ rằng giá trị là một giá trị không phải là giá trị x? Hoặc tại sao ví dụ hữu ích đã được gỡ bỏ?