默认情况下,如何使函数指针参数无操作?

How can I make a function pointer parameter no-op by default?

鉴于我的函数采用函数指针作为参数

void call_func(std::function<void()>func) {
    func();
}

最直接的方法是

void no_op() {
    ;
}

void call_func(std::function<void()>func = no_op) {
    func();
}

是否有更简洁的方法来避免创建无用的 no_op 函数?

您可以使用空 lambda, which could be also wrapped by std::function。例如

void call_func(std::function<void()>func = []{}) {
    func();
}