2
私は最近、問題を考えました。のは、このような可変長引数のテンプレートがあるとしましょう:バリデーションテンプレートクラスの定義のバリエーション数
template <typename... Types>
class example
{
//something
};
今、私が達成したいものを、私はexample<int, double, float>
のオブジェクトを作成するときに、このテンプレートインスタンスがコンパイルされるということです。
class example<int, double, float>
{
int int_array[5];
double double_array[5];
float float_array[5];
}
そして、私はexample<char, long, myClass2, myClass3>
のオブジェクトを作成し、クラステンプレートのこのインスタンスが生成されます。
class example<char, long, myClass2, myClass3>
{
char char_array[5];
long long_array[5];
myClass2 myClass2_array[5];
myClass3 myClass3_array[5];
}
そこで、基本的、TEMの各可変長引数リストについてプレートのパラメータ、渡されたすべての型名のアクションを繰り返します。私の例では、バリデーショナルテンプレートに渡された各型の5要素配列を宣言しました。名前は "type_array"である必要はありません。渡される型ごとに(変数を宣言するなどの)アクションを実行できる限り、何でも構いません。
これは可能ですか?
を使用することができると仮定しますが、コードをテストしましたように動作しますか? (今は私の手に届いたコンパイラ/ IDEを持っていません。私は興味があります) – KKZiomek
@KKZiomek - 3枚のプリントを追加し、コンパイルして動作させる例を変更しました。 g ++(4.9.2)とclang ++(3.5) – max66
ありがとう、それはまさに私が探していたものです! – KKZiomek