如何编写一个带有默认参数的 lambda 的通用函数?

How to write a generic function that takes a lambda with a default argument?

我想在变量中存储一个函数。我有一个通用的 setter 函数来分配它。如果未指定函数,我想使用默认函数。我该如何实现?

到目前为止我的代码:

void(*fmain)();

template <typename Func>
void setFunc(Func f = [](){cout << "Working!" << endl;}){
    fmain = f;
}

int main(){
    setFunc();

    fmain();
}

同时提供默认模板参数和(匹配的)默认函数参数:

void default_action(void) {cout << "Working!" << endl;};

template <typename Func = void ( * )(void)>
void setFunc(Func f = &default_action){
    fmain = f;
}