无法使用泛型向量作为参数创建精确的函数模板



我有一个函数可以序列化任何类型的参数。它适用于所有类型,除非我传递任何类型的向量。我创建了以下模板:

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&)

有人能帮我创建一个上述错误所需的精确函数模板吗?

答案是:

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 }

最新更新