Xem xét một hàm để so sánh các số nguyên dương; bản thân hàm sử dụng lambda để thực hiện công việc ..C++ 11 biểu thức lambda - Capture vs Argument Passing
// Pass n1, n2 by value to the lambda.
bool Compare(int n1, int n2) {
return [](int n1, int n2) { return n1 > n2; };
}
Đoạn mã trên biên dịch tốt; mặc dù Compare() luôn trả về true;
Tuy nhiên, đoạn mã sau thậm chí thất bại trong việc biên dịch -
// capturing values
bool Compare(int n1, int n2) {
return [n1, n2]() -> bool { return n1 > n2; };
}
và trả về lỗi
lambda.cpp:48:46: error: cannot convert 'Compare(int, int)::__lambda2' to 'bool' in return
return [n1, n2]() -> bool { return n1 > n2; };
Câu hỏi
Có thể đây không phải là mục đích sử dụng giới thiệu lambda của trong C++, vẫn ...
- Tại sao người đầu tiên luôn trả lời đúng?
- Tại sao thứ hai không biên dịch?
Để hoàn chỉnh, nó có giá trị bổ sung như thế nào để sử dụng đúng một giây. –
@RSahu, Xong, cảm ơn. – chris