如何默认创建函数指针参数no-op?

Ruf*_*fus 1 c++ functional-programming function-pointers

鉴于我的函数将函数指针作为参数

void call_func(std::function<void()>func) {
    func();
}
Run Code Online (Sandbox Code Playgroud)

最直接的方式是类似的

void no_op() {
    ;
}

void call_func(std::function<void()>func = no_op) {
    func();
}
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来做到这一点,以便我可以避免创建字面上无用的no_op功能?

son*_*yao 5

你可以使用一个空的lambda,它也可以被包裹std::function.例如

void call_func(std::function<void()>func = []{}) {
    func();
}
Run Code Online (Sandbox Code Playgroud)

  • 也许首先强制衰减`+ [] {}` - 在默认情况下,`std :: function`不需要分配任何存储. (3认同)