Có vẻ như tôi không thể truyền một lambda không bắt giữ làm tham số mẫu cho một templated bởi hàm con trỏ hàm. Tôi đang làm điều đó một cách sai lầm, hay là không thể?Truyền lambda làm tham số mẫu để templated bởi hàm con trỏ hàm
#include <iostream>
// Function templated by function pointer
template< void(*F)(int) >
void fun(int i)
{
F(i);
}
void f1(int i)
{
std::cout << i << std::endl;
}
int main()
{
void(*f2)(int) = [](int i) { std::cout << i << std::endl; };
fun<f1>(42); // THIS WORKS
f2(42); // THIS WORKS
fun<f2>(42); // THIS DOES NOT WORK (COMPILE-TIME ERROR) !!!
return 0;
}
Sử dụng 'std :: function'. – 101010
f2 là tham số biến thời gian chạy. Mẫu yêu cầu thông số thời gian xây dựng (hằng số và loại). Hãy thử thêm const, nhưng nó có thể sẽ không hoạt động. – Hcorg