event_new()使用的libevent中有一个回调函数类型。
typedef void (*event_callback_fn)(evutil_socket_t, short, void *);
我想将lambda与event_callback_fn一起使用。
如果我使用
[](evutil_socket_t fd, short flags, void * _param){}
一切都很好。
但是,如果我使用lambda捕获列表
[&](evutil_socket_t fd, short flags, void * _param){}
event_new()将不会被编译。
答案 0 :(得分:4)
类型别名
void (*event_callback_fn)(evutil_socket_t, short, void *);
是一个函数指针。当Lambda不捕获任何内容时,它们可以自动转换为函数指针。定义闭包(有状态lambda)后,就不能将其作为类型为event_callback_fn
的参数传递。