함수 템플릿을 작성 중입니다. 단순화하려면 다음과 같이 말하십시오.C++ 템플릿 C- 문자열 매개 변수
template < typename T >
void f(const T & x)
{
cout << "generic case" << endl;
cout << x << endl;
}
나는 항상 C- 문자열을 템플릿 매개 변수 인수로 사용할 수 없다고 생각했습니다. 그러나 (++ 4.5.1 g을 사용하여) 실제로 작동 다음
그래서 제 질문은f("hello world");
: 나는 f("hello world")
를 호출 할 때 T
은 무엇인가?
정확히 무슨 일이 일어나고 있는지 전문적으로 분석하려고했습니다.
template < typename T >
void f(const T & x)
{
cout << "generic case" << endl;
cout << x << endl;
}
template <>
void f(const const char * T & x)
{
cout << "char[] case" << endl;
cout << x << endl;
}
을 여러 변화를 시도 : 예를 들어 char[]
이후는 (분명히 작동하지 않는)이 바라 보았다 const char*
입니다. 그들 중 누구도 일하지 않습니다.
ASIDE : 내가하고있는 일에 정말로 필요하지 않습니다. 난 그냥 다른 템플릿 기능 썼다 있도록 T = "C-문자열"의 경우에 대한 전문성이 필요합니다
template < typename T >
void f(const T & x)
{
cout << "generic case" << endl;
cout << x << endl;
}
template < typename T >
void f(T x[])
{
cout << "T[] case" << endl;
cout << x << endl;
}
정확히 무슨 일이 일어나고 있는지 나는에 관해서 궁금하기 때문에 난 그냥 부탁 해요 및 이유이다 C - 문자열은 템플릿 인자가 될 때 내가 읽었을 때 은이 될 수 없다고 말했습니다. 나는 틀린 것에 대해 틀린/오해가 있었음에 틀림 없다.
가능한 복제본 : http://stackoverflow.com/questions/6973040/specialize-a-void-function-template-to-a-const-charn –