看起來我無法將不捕獲lambda作爲模板參數傳遞給函數指針函數模板化。我是做錯了,還是不可能?將lambda作爲模板參數傳遞給由函數指針函數模板化
#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;
}
使用'std :: function'。 – 101010
f2是一個變量 - 運行時參數。模板需要編譯時間參數(常量和類型)。嘗試添加const,但它可能不會工作。 – Hcorg