我写了C++编写的软件插件,这里的地方插件定义一个片段:动态创建和扩展的std ::元组为参数包
extern "C"
irods::ms_table_entry* plugin_factory() {
// The number of msParam_t* arguments that it will accept
int numArguments = 2;
irods::ms_table_entry* msvc = new irods::ms_table_entry(numArguments);
msvc->add_operation(
"my_microservice",
std::function<int(msParam_t*, msParam_t*, ruleExecInfo_t*)>(MyMicroservice)
);
return msvc;
}
我想成为能够使用numArguments
动态生成std::function<int(msParam_t*, msParam_t*, ruleExecInfo_t*)>
参数包。其中numArguments
表示参数msParam_t*
的数量。
我不是一个C++专家(尤其是与模板),所以after some research我发现这个可能通过实施可以如下:
- 的std ::元组
- STD: :tuple_cat
- 的std :: index_sequence
- 的std :: make_integer_sequence
但我真的不知道如何开始实施这个。我发现的例子很难理解,我无法将它们转化为我自己的需求。任何人都可以提供关于如何工作的提示,简短示例或参考资料吗?任何信息非常感谢!
是在编译时已知的numArgument吗? –
它不可能动态执行此操作,因为这将涉及代码生成,但可以静态或静态生成它。什么是add_operation类型? – user1937198
@DavideSpataro - 否,将在运行时定义'numArgument'。 –