gpt4 book ai didi

c++ - 基于输入参数值的返回类型

转载 作者:太空狗 更新时间:2023-10-29 23:45:32 26 4
gpt4 key购买 nike

在 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));
}
}

最佳答案

不,这是不可能的。

类型是编译时构造的,您的函数的类型在编译时是固定的。

如果参数是作为 constexpr“常量表达式”提供的,那么您可能已经使用模板来解决您的问题。但是,对于动态输入,这是不可能的。

关于c++ - 基于输入参数值的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com