OSE*_*OSE 2 c++ decltype c++11
在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));
}
}
Run Code Online (Sandbox Code Playgroud)
不,这是不可能的.
类型是编译时构造,并且函数的类型在编译时是固定的.
如果将参数作为constexpr"常量表达式"提供,那么您可能已经使用模板来解决问题.但是,对于动态输入,这根本不可能.
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |