CáC++ Chuẩn C, phần § 5.1.2/6: [expr.prim.lambda]
Kiểu đóng cửa cho một tổ chức phi-generic lambda-biểu không có lambda-capture có chức năng chuyển đổi const không ảo rõ ràng công khai tới con trỏ tới hàm với liên kết ngôn ngữ C++ (7.5) có cùng tham số và kiểu trả về như toán tử gọi hàm của kiểu đóng. Giá trị trả về bởi chức năng chuyển đổi này sẽ là địa chỉ của một hàm rằng, khi gọi, có tác dụng tương tự như cách gọi các loại đóng cửa của hàm operator gọi
Kể từ khi lambda của bạn có ảnh chụp (mặc định một: [&]
) , không có toán tử chuyển đổi nào cho con trỏ hoạt động.
Ngoài ra, bạn có thể sử dụng std::function<>
quấn lambda của bạn:
#include <functional>
#include <iostream>
int main()
{
int i = 42;
std::function<void(void)> f = [&](){ std::cout << i; };
f();
}
auto f = [&]() {...}? – Kiroxas
Lambdas có ảnh chụp không thể chuyển đổi thành con trỏ hàm. – user657267
Lưu ý rằng bạn không cố gắng chuyển một hàm lambda bằng cách tham chiếu. – juanchopanza