加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C 11 Lambda表达式作为回调函数

发布时间:2020-12-16 03:42:34 所属栏目:百科 来源:网络整理
导读:是否有任何C GUI工具包支持将回调函数定义为C 11 lambda表达式?我相信这是一个使用C#(至少与C相比)编写基于GUI的程序的独特专家.我应该将什么类型的签名用于将lambda表达式作为参数的函数,以及它们如何支持隐式转换? 解决方法 Does any C++ GUI toolkit ou
是否有任何C GUI工具包支持将回调函数定义为C 11 lambda表达式?我相信这是一个使用C#(至少与C相比)编写基于GUI的程序的独特专家.我应该将什么类型的签名用于将lambda表达式作为参数的函数,以及它们如何支持隐式转换?

解决方法

Does any C++ GUI toolkit out there support definition of callback functions as C++11 lambda expressions?

如果他们接受函数指针,那么你至少可以使用不捕获任何东西的lambdas.这样的lambda可以自动转换为函数指针.

What type signature should I use for functions taking lambda expressions as arguments and how does these support implicit conversions?

如果您希望人们使用lambdas或任何可调用对象,那么您可以让您的API接受std :: function对象,或者使用模板:

template<typename Callback>
void do_it(Callback c) {
    c();
}

do_it([&]{ c = a+b; });

模板将允许lambda内联,而std :: function需要间接.对于GUI回调,这可能无关紧要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读