2
バリデーショナルテンプレートパックの配列やベクターを展開したいと思います。 次の例を考えてみましょう:variadicパラメータパックでベクトルまたは配列を展開するには?
template <typename T>
int GetArgValue(std::string name,T& value){
cout<<"GetArgumentValue(): name="<<name<<", val="<<value<<endl;
//Set value
//...
return 0;
}
template<typename ... Tn>
int GetArgValues(std::vector<std::string> keys, Tn&... values){
//Check sizes
//...
//Call GetArg over pack
int retCodes[] = { GetArgValue(keys,values)...};//not possible
//...
return 0;
}
は、パックと一緒に配列またはベクトルを拡大することが可能ですか?そうでない場合、このユースケースに適したアプローチは何ですか?
double arg1;
int arg2;
std::string arg3;
GetArgValues({"firstArg","secondArg","thirdArg"},arg1,arg2,arg3);
またはより良い(可能であれば):例は明らかである
GetArgValues({"firstArg",arg1}, {"secondArg",arg2}, {"thirdArg", arg3});
願って 私が最後に達成したいことは以下の通りです。 ありがとうございます。
#1 http://coliru.stacked-crooked.com/a/d0f1aec11b820582 –
'{ "firstArg"、ARG1}'推定タイプではありません、 'std :: make_pair(" firstArg "、arg1)'オプション[Demo](http://coliru.stacked-crooked.com/a/d7aed99507f9aaa4)になります。 (もう1つの方法は、 'GetArgValues(" firstArg "、arg1、" secondArg "、arg2、" thirdArg "、arg3);') – Jarod42
[Demo](http://coliru.stacked-crooked.com/a/ d1a68f2b8431ac8c)を使用してください。 – Jarod42