2
私はバリデーショナルテンプレートを勉強しています。私はこのようなことができるかどうか疑問に思っていました。任意の数とタイプのパラメータを持つ(任意の戻り値型の) 1回の呼び出しで。私が使用できるコードは次のようなものです:可変個数の複数のパラメータパッケージテンプレートC++
call(f1,f2,f3, 2.2,3);
call(f4,f5, 2.2, "Hello", 'a');
もちろん、渡された引数を受け入れることができます。 は私が関数に渡されるパラメータの固定数で動作するバージョンを書いた:
template<typename T, typename U>
void fcall(const T& t1, const T& t2, U&& u){
u(t1, t2);
}
template<typename... F, typename T, typename U>
void fcall(const T& t1, const T& t2, U&& u, F&&... f){
u(t1, t2);
fcall(t1, t2, f...);
}
私が機能する前にパラメータを渡すことが好きではない場合であっても、それが動作します。
これは私が書いたものであり、それは動作しません:
template<typename P, typename U>
void fcall2(U&& f, const P& param){
f(param);
}
template<typename... P, typename... F, typename U>
void fcall2(U&& f, F&&... func, const P&... param){
f(param...);
fcall2(func..., param...);
}
私はそれが唯一の好奇心だ、役に立たないことを知っています。 提案がありますか?