我寫了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'。 –