【发布时间】:2015-06-15 09:30:43
【问题描述】:
我正在尝试为在我的调用函数中作为模板参数给出的指针调用模板函数。我的代码是:
template <>
struct serialize_helper<std::string> {
// not important code...
}
};
template <class T>
inline void serializer(const T& obj, StreamType::iterator& res) {
if(std::is_pointer<T>::value)
{
//THIS doesn' work
serialize_helper<*T>::apply(*obj,res);
}
else
serialize_helper<T>::apply(obj,res);
}
如果我打电话:
std::string test("test");
serializer(test, res);
一切正常。 但我也希望能够使用指针作为 obj 调用序列化程序:
std::string test* = new std::string("test");
serializer(test, res);
在调用序列化程序函数之前取消引用指针是不可能的选择,请不要这样做。在序列化器函数内部是可能的。
简短的描述:我想用std::string* 调用serializer,如果我用它指向的std::string 调用它,它会做同样的事情。
【问题讨论】:
-
请提供MCVE 以及您遇到的错误消息。
标签: c++ templates pointers c++11