Theo n4487 và các tham chiếu C++ 17 khác, sẽ có thông số hàm lambda mới - constexpr
, nếu có "chỉ rõ rằng toán tử gọi hàm là hàm constexpr
".. Tôi hiểu động cơ về những biểu hiện liên tục trong lambdas.Constexpr lambda theo mặc định?
4) Nếu specifier
constexpr
được bỏ qua trong lambda-declarator, các nhà điều hành chức năng cuộc gọi (hay mẫu)constexpr
nếu nó sẽ đáp ứng yêu cầu: Điều gì là thú vị đối với tôi điểm 4 của đề nghị trong đó nêu là một hàmconstexpr
.
Điều này dẫn tôi đến hai câu hỏi:
- Tại sao chúng ta cần
constexpr
specifier? Có vẻ như là liệu toán tử cuộc gọi lambda sẽ làconstexpr
hay không chỉ phụ thuộc vào thực tế nó sẽ "đáp ứng các yêu cầu của một hàmconstexpr
", nhưng không phải là từ sự hiện diện củaconstexpr
specifier. - Nếu có thể chấp nhận được
constexpr
lambda theo mặc định, tại sao nó cũng không được đề xuất cho các loại chức năng khác - ví dụ như chức năng toàn cục? Điều gì sẽ là tác động nếu trình biên dịch bắt đầu xử lý tất cả các chức năng bao gồm các yêu cầu nhưconstexpr
?