Bạn không thể có một autotham số. Về cơ bản bạn có hai lựa chọn:
Tùy chọn # 1: Sử dụng std::functionnhư bạn đã hiển thị.
Tùy chọn # 2: Sử dụng tham số mẫu:
template<typename F>
void f(F &lambda) { }
Tùy chọn số 2, trong một số trường hợp, có thể hiệu quả hơn, vì nó có thể tránh phân bổ heap tiềm năng cho đối tượng hàm lambda được nhúng, nhưng chỉ khả thi nếu fcó thể được đặt trong tiêu đề như một hàm mẫu. Nó cũng có thể làm tăng thời gian biên dịch và dấu chân I-cache, cũng như bất kỳ mẫu nào. Lưu ý rằng nó cũng có thể không có tác dụng, vì nếu đối tượng hàm lambda đủ nhỏ, nó có thể được biểu diễn nội tuyến trong std::functionđối tượng.
const&?