次のように目的の型を指定して、stl コンテナーに変換したい既知の型のデータ セットがいくつかあります。
Dataset dataset0(....);
Dataset dataset1(....);
Dataset dataset2(....);
int i = dataset0.convert<int>();
vector<int> vi = dataset1.convert<vector<int> >();
pair<vector<bool>, pair<bool, float> > complex = dataset2.convert<vector<pair<vector<bool>, pair<bool, float> >> >();
そのため、Dataset クラスで次の関数を作成しました。
class Dataset
{
....
template<typename T>
T convert();
};
次のような基本的な型を実装するのは簡単です。
template<>
int convert<int>()
{
return int(/*implementation*/);
}
しかし問題は、どのようなタイプの stl コンテナに対してもこれを行うにはどうすればよいかということです。このようなもの:
template<>
vector<T> convert<vector<T> >() // ?? does not compile. where would T come from?
{
vector<T> ret;
for(/* Loop determined from data */)
{
ret .push_back(convert<T>())
}
return ret;
}