std::array へのテンプレート パラメータとして何らかの形で特殊化されていないテンプレート クラスを渡すことは可能ですか? それに似たもの:
template <class T>
class Field{
};
std::array<Field> a;
または、いくつかの BaseField を定義し、それを IntField、StringField、FloatField としてサブクラス化する必要があります。
テンプレートをパラメーターとして受け取るテンプレートを作成できます (別名、テンプレート テンプレート パラメーター)。ただし、テンプレートをパラメーターとして使用できるようにするには、テンプレートを特別に作成する必要があり、そのようにstd::array
指定されていません。
エイリアステンプレートを使用すると、C++11にかなり近づくことができます。
template <typename T>
struct Field {};
template <typename T>
using FieldArray5 = std::array<Field<T>,5>;
int main() {
FieldArray5<int> a0;
}
ただしstd::array
、サイズについてもテンプレート引数が必要であることを覚えておいてください。
に異なる型を保持させたい場合は、std::array
ポリモーフィズムを介してのみ行うことができます。boost::any
そのポリモーフィズムを隠して実装することもできます。