的值在C++ 11返回類型爲有實施sqrt
函數,對於正的和負double
輸入值的工作原理的方法嗎?如果輸入是負值,我希望返回類型爲std::complex<double>
,如果是正值,我想返回類型爲double
。我意識到簡單的解決方案是總是返回std::complex<double>
,但這不是我所期待的。基於輸入參數
下面我有我的第一次嘗試的例子,但是這不會編譯由於a
在返回類型存在:
inline decltype((a > 0)?(double):(std::complex<double>)) sqrt(const double& a)
{
if(a > 0)
{
return std::sqrt(a);
}
else
{
return ((std::complex<double>(0.0,1.0))*std::sqrt(-a));
}
}
另外,我有這個功能在命名空間,以避免與'std'碰撞。 – OSE
聲明它作爲'嵌入汽車的sqrt(const的雙&A) - > decltype(?(A> 0)(雙層):(的std ::複雜))'應該工作。 –
@LoganMurphy好點。我應該改變'std :: sqrt()'。 – OSE