2015-10-26 37 views
-1

請考慮下面的代碼:獲取價值和參考。歧義。模板功能

template<typename Body> 
Body solve(Body a, Body b){ 
    Body zero(0); 
    return zero; 
} 

template<typename Body, Body& zero> 
Body solve(Body a, Body b){ 
    return zero; 
} 

complex<double> zero_complex(0); 

int main() { 
    complex<double> c1(1,2); 
    complex<double> c2(3,4);  
    solve<complex<double>, zero_complex> (c1,c2); 
    return 0; 
} 

我怎樣才能獲得通過參考complex<double>

當我重載一個函數(見下文)時,我得到一個模糊性錯誤。

template<typename Body> 
Body solve(Body& a, Body& b){ 
    Body zero(0); 
    return zero; 
} 
+0

我不太明白這一點。你想在上面的代碼中加入這個重載,並且提出'ambigious blablabla'? –

+0

試圖提高可讀性 – DuncanKinnear

回答

-1

這是因爲你有兩個函數solve具有相同的簽名。改變第二是solve(Body a, Body b, Body& c = zero)

+0

不錯,爲什麼downvote? – GreatAndPowerfulOz