私は実際に、次のようなPythonの「*」演算子に似たものを考えています:
args = [1,2,4]
f(*args)
C++ に同様のソリューションはありますか?
私が思いつくことができるのは次のとおりです。
template <size_t num_args, typename FuncType>
struct unpack_caller;
template <typename FuncType>
struct unpack_caller<3>
{
void operator () (FuncType &f, std::vector<int> &args){
f(args[0], args[1], args[3])
}
};
int
上記では、引数の型のみを想定しています。
問題は、異なる値の unpack_caller のすべての特殊化を記述するのが面倒だと感じていることですnum_args
。
これに対する良い解決策はありますか?ありがとう。