문자열에 특수화 된 템플릿 함수에 대한 포인터를 사용하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1051010

문제

문자열 입력을 기반으로 적절한 루틴을 실행하기 위해 필터 기능 세트를 사용하려고했습니다. 템플릿을 사용하여 일반적인 케이스에 대한 매칭 기능을 만들려고했지만 특수 함수에 대한 포인터를 저장하려고 할 때 "유형이 아닌 유형이 아닌 유형"오류가 발생합니다 (실제 응용 프로그램에서 구조).

Visual C ++ 8 '콘솔 응용 프로그램'에서 증류 된 예제

template <const char *C>
const char*
f(void) {
  return C;
}

const char* (*g)(void) = f<"hi">;


int _tmain(int argc, _TCHAR* argv[])
{
  return g();
}

오류가 발생하지 않습니다

Error   1   error C2440: 'initializing' : cannot convert from 'const char *(__cdecl *)(void)' to 'const char *(__cdecl *)(void)'    c:\files\pointer.cpp    7   

(메인 리턴 값에도 오류가 있지만 여기서는 관심이 없습니다.)

동일한 예가 If가 성공했습니다 const char * int로 대체됩니다.

도움이 되었습니까?

해결책

템플릿-값 매개 변수로서의 문자열은 ISO 표준에 의해 금지됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top