У меня есть три аргумента шаблона для функции, и у меня проблемы с (я думаю) компилятором, определяющим, какой аргумент шаблона есть какой.
Функция шаблона:
#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)
Однако, если я использую встроенный тип, такой как int или float, для параметра P, все компилируется нормально.
, например * * 1016
cliques::find_optimal_partition_louvain<int>(my_new_graph, cliques::find_linearised_stability(current_markov_time));
Так что мой вопрос в том, что я здесь делаю неправильно, как я могу лучше сообщить компилятору, какой параметр какой, или я совершенно не в курсе?