関数に対して3つのテンプレート引数があり、コンパイラがどのテンプレート引数がどれであるかを推測するのに問題があります(私は思います)。
テンプレート関数は次のとおりです。
#include <structures/partition.h>
#include <vector>
namespace cliques
{
template <typename P, typename T, typename QF>
P find_optimal_partition_louvain(cliques::Graph<T> &my_graph,
QF quality_function)
{
P dummy;
}
}
そして、私がそれを呼ぼうとすると
cliques::find_optimal_partition_louvain<cliques::DisjointSetForest>(my_new_graph, cliques::find_linearised_stability(current_markov_time));
テンプレート引数Pはcliques::DisjointSetForestに対応する必要があり、通常の関数引数はテンプレート化されたクラスと関数オブジェクトです。
これは失敗します
error: no matching function for call to
find_optimal_partition_louvain(cliques::Graph<lemon::ListGraph>&,
cliques::find_linearised_stability)
ただし、Pパラメーターにintやfloatなどの組み込み型を使用すると、すべてが正常にコンパイルされます。
例えば
cliques::find_optimal_partition_louvain<int>(my_new_graph, cliques::find_linearised_stability(current_markov_time));
だから私の質問は、私がここで何を間違っているのか、どのパラメーターがどれであるかをコンパイラーにもっとよく知らせるためにどのように使用できますか、または私は完全に軌道に乗っていないのですか?