我在这里阅读了上一个问题,但似乎有点无关。当 C++ lambda 没有捕获任何内容时,它可以作为v8::FunctionTemplate
. 但是当它捕捉到我需要的东西时,编译器开始抱怨:
error: no matching function for call to 'v8::FunctionTemplate::New(
BaseContext::New(const v8::Arguments&)::<lambda(const v8::Arguments&)>)
这是测试代码:
int a = 3;
Local<FunctionTemplate> failed = FunctionTemplate::New(
[=, a](const Arguments& args)-> Handle<Value>
{
a = a+a;
});
Local<FunctionTemplate> success = FunctionTemplate::New(
[](const Arguments &args) -> Handle<Value>
{
int a = 3;
});
我想使用 lambda 功能,因为没有理由定义小的静态函数,这些函数实际上会成为另一个函数中的回调。但是捕获和不捕获之间的唯一区别真的让我很困扰,并且错误消息似乎是由 lambda 本身引起的,无论它是否捕获东西。