gpt4 book ai didi

C++ - auto 和 decltype 的替代方案

转载 作者:行者123 更新时间:2023-11-30 01:42:09 25 4
gpt4 key购买 nike

每个人。我正在阅读一个 c++ 代码,我面对这个 2 模板。
第一:

template <class T>
float wrap_360(const T angle, float unit_mod)
{
const float ang_360 = 360.f * unit_mod;
float res = fmodf(static_cast<float>(angle), ang_360);
if (res < 0) {
res += ang_360;
}
return res;
}

第二个是:

template <class T>
auto wrap_360_cd(const T angle) -> decltype(wrap_360(angle, 100.f))
{
return wrap_360(angle, 100.f);
}

第一个对我来说很明显,但是第二个到底想说什么??

实际上,我的编译器不支持 c++ 11,因此无法识别“auto”和“decltype”。

如何更改此代码以使其在 c++11 编译器下可以理解?

任何帮助都会很棒。提前致谢。

最佳答案

在这种情况下,使用 decltype() 看起来是多余的。您应该能够将第二个函数替​​换为以下内容:

template <class T>
float wrap_360_cd(const T angle)
{
return wrap_360(angle, 100.f);
}

为了将来引用,-> 之后的代码称为尾随返回类型,如果您的函数返回类型是使用 auto 关键字指定的,则这是必需的(这在某些情况下很有用,例如当您想要使用 decltype( ) 来指定返回类型,但在这种情况下不需要它,因为您已经知道 wrap_360() 函数的返回类型)。

关于C++ - auto 和 decltype 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40060523/

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