文字列に特殊なテンプレート関数へのポインタを取る方法は?
-
20-08-2019 - |
質問
私は、文字列の入力に基づいて、適切なルーチンを実行するために、フィルタ機能のセットを使用しようとしていました。私は、テンプレートを使用して一般的なケースのためにマッチャー機能を作成しようとしましたが、私は(実際のアプリケーションでは、構造中に)専門の関数へのポインタを格納しようとするとエラー「を入力すると等しくないタイプ」を取得
ビジュアル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
(それはまた、メインの戻り値にエラーがありますが、それはここで私には関係しません。)
同じ例succedesをINTとconst char *
置換されている場合
解決
テンプレート値パラメータとして
文字列はISO標準で禁止されています。
所属していません StackOverflow