在 C++11 中,有没有办法实现一个sqrt
适用于正输入值和负double
输入值的函数?我希望返回类型为std::complex<double>
输入是否为负,double
如果为正则为 a。我意识到简单的解决方案是总是返回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));
}
}