次のように定義された可変個引数テンプレートメンバー関数があります。
template<typename ... Params>
VAlgorithm* CreateAlgorithm(const char *objectName, const char *className, Params ... par)
そして、Paramsにタイプが含まれていない特殊バージョン(私は「空の」特殊化と呼んでいます)、つまり次のアドレスを取得したいと思います。
VAlgorithm* CreateAlgorithm(const char *objectName, const char *className)
私はいくつかの方法で試しました。素朴な方法:
&AlgorithmFactory::CreateAlgorithm<>
(たとえば、&AlgorithmFactory :: CreateAlgorithm <int>が機能するため)、より明示的な方法:
(VAlgorithm* (*)(const char*, const char*))AlgorithmFactory::CreateAlgorithm<>
明示的な方法で、GCC4.7.1は次のように述べています。
error: insufficient contextual information to determine type
「空の」特殊化はコンパイラーによって理解されていないようです。コンパイラーは、欠落しているテンプレートタイプを、「タイプなし」の情報ではなく、情報の欠如として解釈します。これを行う正しい方法は何ですか?(潜在的に素朴な質問で申し訳ありませんが、私は可変個引数テンプレートにかなり慣れておらず、このトピックに関するドキュメントは見つかりませんでした)。ありがとう