Например:
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 и неконстантного char *.Однако я проверил, что если я специализируюсь только на const char *
, то передача переменной char *
вызовет неспециализированную версию при вызове так в VC ++ 10:
char something[25];
strcpy(something, "blah");
write(something);
Что будетправильный способ сделать это?