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

前端之家收集整理的这篇文章主要介绍了C 11 Lambda表达式作为回调函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有任何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回调,这可能无关紧要.

猜你在找的C&C++相关文章