是否有任何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回调,这可能无关紧要.