次の場合:
template <typename T0,typename T1,typename T2 , typename T3 , typename T4>
class Tuple
{
private:
T0 v0;
T1 v1;
T2 v2;
T3 v3;
T4 v4;
public:
void f()
{
cout << v0 << "," << v1 << "," << v2 << "," << v3 << "," << v4 << endl;
}
};
int
-sが2つしかない部分クラスを作成したい場合は、次のように特殊化する必要があります。
class NullType { }; // create an empty class
template <typename T0, typename T1>
class Tuple<T0,T1,NullType,NullType,NullType >
{
private:
T0 v0;
T1 v1;
public:
void func()
{
cout << "i'm a specialization" << endl;
}
};
しかし、この実装では、次のことを行う必要があります。
Tuple<int,int,NullType,NullType,NullType> b;
かなり醜いです:)
別の(空の)クラスを定義せずに部分的な特殊化を実装する別の方法はありTuple<int,int> b1;
ますか?