tôi ghét có dạng tròn, mà là một tài liệu tham khảo rvalue hoạt động t ype là một tham chiếu rvalue cho kiểu hàm. Có một thứ như một loại hàm, ví dụ: void()
. Và bạn có thể tạo thành một tham chiếu rvalue cho nó.
Về hệ thống phân loại được giới thiệu bởi N3055, đây là một xvalue.
Sử dụng của nó hiếm và tối nghĩa, nhưng nó không phải là vô ích. Hãy xem xét ví dụ:
void f() {}
...
auto x = std::ref(f);
x
có kiểu:
std::reference_wrapper<void()>
Và nếu bạn nhìn vào tóm tắt cho reference_wrapper
nó bao gồm:
reference_wrapper(T&) noexcept;
reference_wrapper(T&&) = delete; // do not bind to temporary objects
Trong ví dụ này T
là chức năng loại void()
. Và do đó, khai báo thứ hai tạo thành một tham chiếu rvalue cho kiểu hàm cho mục đích đảm bảo rằng reference_wrapper
không thể được xây dựng với một đối số rvalue. Thậm chí nếu T
là const.
Nếu không hợp pháp để tạo thành tham chiếu rvalue cho chức năng thì bảo vệ này sẽ dẫn đến lỗi biên dịch ngay cả khi chúng tôi không chuyển giá trị T
cho hàm tạo.
Nguồn
2011-08-10 20:31:43
cuối cùng bạn đã hiểu câu trả lời chưa? Tôi đã để lại một bình luận dưới câu trả lời vì vậy nếu bạn nhận thức được sự làm rõ, xin vui lòng cung cấp nó. Cảm ơn –