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

时间:2018-02-23 15:44:59

标签: c++ function generics lambda default-value

我想将一个函数存储在一个变量中。我有一个通用的setter函数来分配它。如果没有指定功能,我想使用默认功能。我该如何做到这一点?

到目前为止我的代码:

void(*fmain)();

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

int main(){
    setFunc();

    fmain();
}

1 个答案:

答案 0 :(得分:0)

提供默认模板参数和(匹配)默认功能参数:

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

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