1 対 1 の関係に関連する一連の型があります。たとえば、次のようになります。
TypeA ---> Type1
TypeB ---> Type2
TypeC ---> Type3
私はコンパイル時にこれらの関係を知っています。
次に、この 2 つの型に依存するテンプレート クラスがあります。
template<class T1,class T2>
class MyClass
{
T1 foo;
T2 bar;
};
さて、私のライブラリのユーザーは次のように入力します:
MyClass<TypeA,Type1> x;
2 つの型の間に依存関係があり、ユーザーが最初の型のみを指定するだけで十分であるため、これは不便です。
また、2 つのタイプを混在させることはできません。
MyClass<TypeA,Type2> y; //it should not compile
私はテンプレート メタ プログラミングにあまり詳しくありません。これは実行可能なタスクであるという印象を受けましたが、間違っている可能性があります。
関連する型の数は膨大ですが、必要に応じてスクリプトを実行してコードを生成できます。
それが可能か、それとも私が時間を無駄にしているのか知っていますか? 私を正しい方向に向けるアイデアはありますか?