私は、トレーニングの目的でXMLシリアライザに簡単なデータを書きます。その考え方は、値を文字列形式に変換するために何かを行うserialize関数に値を渡すことです。多くのタイプにはコンバージョンが組み込まれていますが、多くの場合、これを行う特殊な機能が必要です。私のアプローチは、次のとおりです。私はこのシグネチャを持つテンプレート関数持たジェネリッククラスのテンプレート関数の特殊化
:
template <class T> void serialize(T *value, Serializer *serializer);
をし、私はこのようなテンプレート特化することができます
template <> void serialize<bool>(bool *value, Serializer *serializer);
作品罰金を。今、私はのように、ベクトル用のシリアル化機能を書きたい:
template <class T> void serialize<std::vector<T*> >(std::vector<T*> *value, Serializer *serializer) {
serializer->begin_section("array");
for(std::vector<T*>::iterator it = value->begin(); it != value->end(); it++) {
serializer->add_value(*it);
}
serializer->end_section();
}
しかし、私はそれ(G ++ 4.6.2)をコンパイルするとき、私はerror: function template partial specialization ‘serialize<std::vector<T*> >’ is not allowed
を取得します。私はこれを行う方法がありますか?