爲了訓練目的,我正在向XML序列化程序寫入一個簡單的數據。我們的想法是將值傳遞給序列化函數,該函數將執行某些操作以將給定值轉換爲字符串格式。許多類型都具有內置轉換功能,但對於很多類型我都希望擁有專門的功能。我的做法是:使用泛型類專精模板函數
我有這個簽名的模板功能:
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
。有什麼辦法可以做到這一點?