gpt4 book ai didi

采用 float 或 double 的 C++ 模板函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:34 25 4
gpt4 key购买 nike

我想编写一个适用于 doublefloat 的模板函数,类似这样:

template <typename T>
constexpr auto someCalc(const T x) {
return x * 4.0 + 3.0;
}

我的问题是 4.0 3.0 都是 double 文字,因此我在 clang 上收到以下错误:

error: implicit conversion increases floating-point precision: 'const float' to 'double' [-Werror,-Wdouble-promotion]

有没有一种优雅的方式来编写这段代码而无需向上转换为 double?我能想到的最好的就是这个

template <typename T>
constexpr auto someCalc(const T x) {
constexpr T four = 4.0;
constexpr T three = 3.0;
return x * four + three;
}

对于更大/更复杂的函数,我发现它的可读性更差且更难维护。

最佳答案

我会这样做:

template <typename T>
constexpr auto someCalc(const T x) {
return x * T(4.0) + T(3.0);
}

或者使用 static_cast,如果你愿意的话。

关于采用 float 或 double 的 C++ 模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57943754/

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