我有一个序列化任何类型参数的函数。它适用于所有类型,除非我传递任何类型的矢量。 我创建了以下模板:
template <typename T>
inline bool serialize(const std::vector<T>& v){}
但它不起作用,它会抛出以下运行时符号错误,该错误会查找以下模板专门化:
bool serialize<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)
简化模板的确是:
bool serialize<std::vector<std::string> >(rapidjson::Writer<>&, std::vector<std::string> const&)
有人可以帮我创建上述错误所需的确切功能模板吗?
答案 0 :(得分:1)
答案是:
template <template <typename Value, typename Allocator = std::allocator<Value>> class Container> class VectorWrapper;
template<typename T = decltype(VectorWrapper)>
inline bool serialize(writer_t& w, const T& v)
{ //code here }