例えば:
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* の 2 つのバリアントで、間違っているように見えます。ただし、VC++ 10 で次のように呼び出されるとconst char *
、変数を渡すだけで特殊char *
化されていないバージョンが呼び出されることを確認しました。
char something[25];
strcpy(something, "blah");
write(something);
これを行う適切な方法は何ですか?