2015-10-26 63 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