0

テンプレートは非型の関数ポインター パラメーターを取ることができますが、すべての可能な関数ポインター パラメーターが受け入れられると問題が発生します。次に例を示します。

void dummy()
{
}

template <typename FT, FT* fp>
void proxy()
{
  fp();
}

int main()
{
  proxy<decltype(dummy), &dummy>();

  return 0;
}

ご覧のとおり、これは非常に面倒です。「ワイルドカード」関数ポインタを非型テンプレート パラメータとして提供する、より便利な方法はありますか?

4

3 に答える 3

1

特定の問題に対するより良い解決策は、単純に関数型のみをテンプレート引数として取り、アイテムを通常の関数引数として取ることです。使用する引数の型を明示的に指定する代わりに、型推定を使用することもできます。

void dummy()
{
}

template <typename FT>
void proxy(FT fp)
{
  fp();
}

int main()
{
  proxy(fp);

  return 0;
}
于 2013-11-08T11:07:26.160 に答える