为了训练目的,我正在向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
。有什么办法可以做到这一点?