我是C++的新手,当我阅读node.js的源代码时,我看到了以下代码:
struct StartExecutionCallbackInfo {
v8::Local<v8::Object> process_object;
v8::Local<v8::Function> native_require;
};
using StartExecutionCallback =
std::function<v8::MaybeLocal<v8::Value>(const StartExecutionCallbackInfo&)>;
LoadEnvironment(env, StartExecutionCallback{});
我的困惑是:StartExecutionCallback{}
.
我想可以这样解读:
std::function<v8::MaybeLocal<v8::Value>(const StartExecutionCallbackInfo&)>{};
但它是什么意思?一个空函数指针?
1条答案
按热度按时间x0fgdtte1#
您可能知道
StartExecutionCallback
是function [wrapper]对象的类型,接受const StartExecutionCallbackInfo&
作为参数,并返回v8::MaybeLocal<v8::Value>
。使用
StartExecutionCallback{}
创建了一个该类型的示例,但它实际上并不包含任何可调用对象(即函数 Package 器没有目标)。所以是的,它有点类似于空函数指针。
接受此参数的
LoadEnvironment
可以检查它是实际的可调用对象还是空的可调用对象。尝试调用“空”std::function
将导致std::bad_function_call
异常。下面的代码演示了这一点(简化版本):
输出将为: