我正在構建一個簡單的文本分析器。我有以下代碼:錯誤:模板參數數量錯誤(0,應該是1)
template<typename FwdIt0, typename FwdIt1, typename Comp, typename Num>
Num SmartAnalyzer::count_intersection(FwdIt0 beg0, FwdIt0 end0, FwdIt1 beg1, FwdIt1 end1, Comp less, Num n)
{
while (beg0 != end0 && beg1 != end1)
{
if (less(*beg0, *beg1)) ++beg0;
else if (less(*beg1, *beg0)) ++beg1;
else
{
++n;
++beg0;
++beg1;
}
}
return n;
}
// Finds intersection between 2 sentences and divide it to the average sentence length
template<typename FwdIt0, typename FwdIt1>
double SmartAnalyzer::intersection_weight(FwdIt0 beg0, FwdIt0 end0, FwdIt1 beg1, FwdIt1 end1)
{
double const mid_size = 0.5 * (std::distance(beg0, end0) + std::distance(beg1, end1));
/* LINE 38 */ double const intsc = count_intersection(beg0, end0, beg1, end1, std::less<>(), double());
return intsc/mid_size;
}
當我嘗試編譯它,我越來越:
../lib/analyzer.cpp: In member function ‘double SmartAnalyzer::intersection_weight(FwdIt0, FwdIt0, FwdIt1, FwdIt1)’ :
../lib/analyzer.cpp : 38 : 76 : error : wrong number of template arguments(0, should be 1)
隨着GCC 4.7 on Debian
。我認爲這與GCC有某種關係,直到4.7+不支持模板別名,但我不知道如何修復它。我沒有機會將gcc更新到4.8。
請向我們展示analyzer.cpp中使用模板並嘗試實例化的第38行。 – jsantander
可能的重複http://stackoverflow.com/questions/7721244/c-template-function-specialization-wrong-number-of-template-arguments和http://stackoverflow.com/questions/22097240/c-wrong-number -of-template-arguments-2-should-be-1 – Rakib
@jsantander我編輯了我的問題 – Deepsy