: 내가 잘못 CONST와 const가 아닌 숯불 * 특히 두 가지 변종을하고있는 것 같은이 보이는여러 종류의 문자열을 전문으로하려면 여러 템플릿 전문화가 필요합니까? 예를 들어
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);
}
.
char something[25];
strcpy(something, "blah");
write(something);
은 무엇 이렇게 적절한 방법이 될 것이다 : 그러나 나는 VC++ (10)이 같은 전화했을 때 난 단지, 다음 char *
변수가 아닌 전문 버전을 호출합니다 통과 const char *
에 대한 전문 경우 있음을 확인?
전문화 대신 단순한 과부하를 사용하십시오. – avakar
그리고 nitpick, string (avakar가 과부하로 더 좋을 것이라고 말함)의 전문화는 const 참조를 취해야합니다. –
OK, 과부하에 대해 좋은 점. 어떤 인터넷 검색은 그것이 왜 더 좋은지에 대한 다양한 이유를 보여줍니다. 또한 const 문자열 &로 수정됩니다. –