Как получить указатель на шаблонную функцию, специализирующуюся на строке?

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   

(Он также содержит ошибку в основном возвращаемом значении, но это меня здесь не касается.)

Тот же пример выполняется , если const char * заменяется на int.

Это было полезно?

Решение

Строки в качестве параметров шаблонного значения запрещены стандартом ISO.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top