2

テンプレート化された引数の可変数を持つテンプレート化されたクラスがあります。これらの場合 (私は C++11 を買う余裕がありません) のように、呼び出す既定のクラスを作成し、none以下のように既定として配置することをお勧めします。

struct none {};

template<class T1=none, T2=none, T3=none>
class A{

   template<class T>
   double extract() { return none();}

   template<>
   double extract<T1>() { return m1_();}

   template<>
   double extract<T2>() { return m2_();}

   template<>
   double extract<T3> () { return m3_();}

   T1 m1_;
   T2 m2_;
   T3 m3_;
};

この段階では、テンプレート化された各引数にアクセスできるジェネリック/テンプレート化されたアクセサー関数を実装する方法がわかりません。

テンプレート化された引数はすべて異なるため、テンプレート化された引数ごとに A::extract() を特殊化しました。

これを行うより良い方法はありますか?私が見ることができるタグ付けの種類はありますか?

4

4 に答える 4