c++ - 使用 lambda 作为 C++ 函数的参数

标签 c++ function c++11 lambda

我想使用 lambda 作为 C++ 函数的参数,但我不知道在函数声明中指定哪种类型。我想做的是:

void myFunction(WhatToPutHere lambda){
    //some things
}

我试过 void myFunction(auto lambda)void myFunction(void lambda) 但这些代码都没有编译。万一这很重要,lambda 不会返回任何内容。

如何在 C++ 函数中使用 lambda 作为参数?

最佳答案

你有两种方法:制作你的函数模板:

template <typename F>
void myFunction(F&& lambda)
{
    //some things
}

或删除类型(例如 std::function):

void
myFunction(const std::function<void()/*type of your lamdba::operator()*/>& f)
{
    //some things
}

关于c++ - 使用 lambda 作为 C++ 函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40844622/

相关文章:

c++ - 为什么删除指向堆栈的指针是错误的?

c++ - 是否可以防止遗漏聚合初始化成员?

c++ - 访问 getter 的真正底层类型?

c++ - Xcode5 中的 make_unique 可用性?

javascript - 单击 div 外部某处时如何关闭 javascript 上的日期选择器?

c++ - 为什么这些代码仍然使用左值函数?

c++ - 在 Qt 5.3 中向工具栏添加图标

C++:在模板化类型中存在命名成员时在模板化类中提供类函数?

c++ - 在我的主窗口中调用 Qt 小部件主窗口函数

从另一个函数调用 main