私は現在、バリデーションテンプレートサポートでできることのいくつかを頭に入れようとしています。のは、私はこのような機能を持っているとしましょう -既知のタイプのC++バリアント関数テンプレート
template <typename ... Args>
void foo(Args ... a)
{
int len = sizeof...(tail);
int vals[] = {a...};
/* Rest of function */
}
/* Elsewhere */
foo(1, 2, 3, 4);
私は、引数は整数になりますが、明らかに私は何か他のものを提供する場合に失敗しますので、あらかじめ想定しているため、このコードは動作します。私はこれをやって試してみましたが、コンパイラがエラーを与えた
void foo(int ... a)
- 私は、パラメータパックは、事前に特定のタイプが含まれていることを知っていれば、私はテンプレートなしで行うとのようなものを持つことができますいくつかの方法がありますfooについてはvoidフィールドです。私は再帰を介してパック内のパラメータにもアクセスできることを知っていますが、これが私の問題を解決するかどうかはわかりません。つまり、同じタイプの引数を可変数にすることができます。
あなたはすべてのタイプが* * int型であることを確認するために 'enable_if'を使用することができます。 –
コードはintを束ねて動作します。あなたが他の何かを与えるなら、それはうまくいかない。ミッションが達成されたように見えます。問題はどこだ? –
私は問題は、コンパイル時にintであることを保証できるかどうかということです。 – znby