我有三個模板參數給一個函數,並且遇到了麻煩(我認爲)編譯器推斷哪個模板參數是哪個。模板參數演繹(在同一個調用中使用顯式和隱式參數)
模板功能是:
#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應該對應於拉幫結派:: DisjointSetForest,和正常功能參數是一個模板化類和函數對象。
此失敗
error: no matching function for call to
find_optimal_partition_louvain(cliques::Graph<lemon::ListGraph>&,
cliques::find_linearised_stability)
但是如果我使用內建類型如int或浮法用於P參數一切編譯罰款。
例如
cliques::find_optimal_partition_louvain<int>(my_new_graph, cliques::find_linearised_stability(current_markov_time));
所以我的問題是我在做什麼錯在這裏,我怎麼能使用更好的告訴編譯器哪個參數是哪個,還是我完全偏離了軌道?
爲了參考起見,指定您正在使用的編譯器會有所幫助。 編輯:沒關係,在下面的評論中指定的「g ++ 4.4.3」 – 2011-01-24 21:16:16