Как получить указатель на шаблонную функцию, специализирующуюся на строке?
-
20-08-2019 - |
Вопрос
Я пытался использовать набор функций фильтра для запуска соответствующей процедуры, основанной на вводе строки.Я попытался создать функции сопоставления для распространенных случаев с использованием шаблонов, но я получаю ошибку "тип, не равный типу" при попытке сохранить указатель на специализированную функцию (в структуре, в реальном приложении)
Приведенный пример из "консольного приложения" 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.
Не связан с StackOverflow