首页 > 后端开发 > C++ > 'decltype(auto)”在 C 中的应用是什么?

'decltype(auto)”在 C 中的应用是什么?

Mary-Kate Olsen
发布: 2024-12-11 09:32:09
原创
792 人浏览过

What are the Applications of `decltype(auto)` in C  ?

decltype(auto) 有哪些用途?

在 C 14 中引入,decltype(auto) 习惯允许 auto 声明在给定的情况下使用 decltype 规则表达。虽然它的主要用途是函数的返回类型推导,但还有其他有价值的应用。

通用代码中的返回类型转发

在通用代码中,decltype(auto) 可以实现返回的完美转发类型而不知道其基础类型。这对于泛型函数特别有用:

template<class Fun, class... Args>
decltype(auto) Example(Fun fun, Args&&... args) {
    return fun(std::forward<Args>(args)...);
}
登录后复制

延迟递归模板中的返回类型推导

decltype(auto) 还可以延迟递归模板中的返回类型推导,防止无限递归。例如:

template<int i>
struct Int {};

constexpr auto iter(Int<0>) -> Int<0>;

template<int i>
constexpr auto iter(Int<i>) -> decltype(auto) {
    return iter(Int<i-1>{});
}
登录后复制

其他用途

除了这些主要应用之外,decltype(auto) 还有各种其他用途,如 C 草案标准 (N3936) 中所述:

  • 变量初始化:

    decltype(auto) x3d = i;  // decltype(x3d) is int
    登录后复制
  • 指针声明:

    decltype(auto)*x7d = &i;  // decltype(x7d) is int*
    登录后复制
  • 表示特定上下文中的占位符类型,例如函数声明符、类型说明符序列和转换函数 ID。

以上是'decltype(auto)”在 C 中的应用是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板