我可以将 C++11 lambda 与 libevent 一起使用吗?
Can I use C++11 lambda with libevent?
event_new() 使用的 libevent 中有一个回调函数类型。
typedef void (*event_callback_fn)(evutil_socket_t, short, void *);
我想在 event_callback_fn 中使用 lambda。
如果我用
[](evutil_socket_t fd, short flags, void * _param){}
一切正常。
但是如果我使用 lambda 捕获列表
[&](evutil_socket_t fd, short flags, void * _param){}
event_new() 不会被编译。
类型别名
void (*event_callback_fn)(evutil_socket_t, short, void *);
是函数指针。当 Lambda 不捕获任何内容时,它们可以自动转换为函数指针。一旦定义了一个闭包(有状态的 lambda),就不能将其作为 event_callback_fn
.
类型的参数传递
event_new() 使用的 libevent 中有一个回调函数类型。
typedef void (*event_callback_fn)(evutil_socket_t, short, void *);
我想在 event_callback_fn 中使用 lambda。
如果我用
[](evutil_socket_t fd, short flags, void * _param){}
一切正常。
但是如果我使用 lambda 捕获列表
[&](evutil_socket_t fd, short flags, void * _param){}
event_new() 不会被编译。
类型别名
void (*event_callback_fn)(evutil_socket_t, short, void *);
是函数指针。当 Lambda 不捕获任何内容时,它们可以自动转换为函数指针。一旦定义了一个闭包(有状态的 lambda),就不能将其作为 event_callback_fn
.