Как взять указатель на шаблонную функцию, специализирующуюся на строке? - PullRequest
1 голос
/ 27 июня 2009

Я пытался использовать набор функций фильтра для запуска соответствующей подпрограммы, основанной на строковом вводе. Я пытался создать функции сопоставления для общих случаев с использованием шаблонов, но при попытке сохранить указатель на специализированную функцию (в структуре, в реальном приложении) я получаю ошибку "тип не равен типу"

Дистиллированный пример из консольного приложения 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.

1 Ответ

2 голосов
/ 27 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...