例如:
template<typename T>
void write(T value)
{
mystream << value;
}
template<>
void write<const char*>(const char* value)
{
write_escaped(mystream, value);
}
template<>
void write<char*>(char* value)
{
write_escaped(mystream, value);
}
template<>
void write<const std::string&>(const std::string& value)
{
write_escaped(mystream.c_str(), value);
}
这看起来像我做错了,尤其是 const 和 non-const char* 的两个变体。但是我检查了如果我只专注于const char *
然后传递一个char *
变量将调用非专业版本,当在 VC++10 中这样调用时:
char something[25];
strcpy(something, "blah");
write(something);
这样做的正确方法是什么?