【问题标题】:How can I make a function pointer parameter no-op by default?默认情况下,如何使函数指针参数无操作?
【发布时间】:2019-05-20 13:52:48
【问题描述】:

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

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

最直接的方法是

void no_op() {
    ;
}

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

有没有更简洁的方法可以避免创建字面上无用的no_op 函数?

【问题讨论】:

标签: c++ functional-programming function-pointers


【解决方案1】:

您可以使用空的lambda,也可以使用std::function 包裹。例如

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

【讨论】:

  • 可能会先强制衰减+[]{} - 默认情况下std::function 不需要分配任何存储空间。
猜你喜欢
  • 1970-01-01
  • 2011-05-25
  • 2022-12-11
  • 2019-12-16
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多