首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ - auto和decltype的替代

C++ - auto和decltype的替代
EN

Stack Overflow用户
提问于 2016-10-15 22:55:21
回答 1查看 1.5K关注 0票数 2

每具身体。我正在读一段c++代码,我面对的是这个2模板。

首先:

代码语言:javascript
复制
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;
}

第二个是:

代码语言:javascript
复制
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编译器下可理解?

任何帮助都是最好的。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-10-15 23:14:57

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

代码语言:javascript
复制
template <class T>
float wrap_360_cd(const T angle)
{
    return wrap_360(angle, 100.f);
}

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40060523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档