首页 > 后端开发 > C++ > C 17 中引入了哪些关键语言和库功能?

C 17 中引入了哪些关键语言和库功能?

Linda Hamilton
发布: 2024-12-13 16:33:13
原创
216 人浏览过

What are the Key Language and Library Features Introduced in C  17?

C 17 中的新功能

C 17 的功能开发完成后,引入了一些新的语言功能和库添加:

语言功能:

  • 改进的模板用法:

    • 类模板的模板参数推导
    • 表示使用模板的任何类型的值
  • Lambda 增强:

    • constexpr lambda 简介
    • 捕获能力这在lambdas
  • 属性:

    • 引入新属性,如 [[fallthrough]]、[[nodiscard] ], 和[[maybe_unused]]
  • 语法清理:

    • 内联变量
    • 简化的命名空间语法:命名空间 A::B
    • 无抛出表达式: throw() 和 noexcept(true)
  • 控制流改进:

    • 用于解包值的结构化绑定
    • if (init;condition) 和 switch (init;condition) 用于增强流程control
    • 基于范围的广义 for 循环
    • 用于条件编译的 if constexpr
  • 其他值得注意的功能:

    • 十六进制浮点数文字
    • 过度对齐数据的动态内存分配
    • 保证复制省略
    • 表达式的固定计算顺序
    • 枚举的直接列表初始化
    • 转发进度保证线程

库添加:

数据类型:

  • std ::代表不同值的变体types
  • std::Optional 用于表示可选值
  • std::any 用于表示任何类型的值,包括不可复制的类型
  • std::string_view 用于高效处理字符串引用
  • std::byte 用于表示没有类型的数据信息

可调用处理:

  • std::invoke 用于通用可调用调用
  • std::apply 用于基于元组用于构造的可调用调用
  • std::make_from_tuple元组中的对象
  • is_invocable 及相关特征的介绍

文件系统库:

  • 文件系统技术规范的实现(TS)

新算法:

  • for_each_n、reduce、transform_reduce 等

螺纹加工增强功能:

  • 引入 std::shared_mutex 以实现更高效的多线程访问
  • 原子保证和硬件干扰大小检测

库基础 TS 新增内容:

  • 搜索算法 (alg.search)
  • 多态分配器 (pmr)

容器改进:

  • try_emplace 和 insert_or_assign 用于高效容器插入
  • 映射、集合和无序容器的拼接
  • 字符串的非常量data()访问

智能指针:

  • 修复和调整unique_ptr
  • 引入weak_from_this来管理共享指针

Misc:

  • 使用C11代替C99为标准库
  • 为未来的标准库保留std[0-9]命名空间
  • 各种实用函数(destroy、uninitialized_***)
  • 特殊数学函数的暴露
  • std::clamp、std::gcd 和 的介绍std::lcm
  • 异常处理改进,包括 std::uncaught_exceptions
  • std::as_const、std::bool_constant 和各种模板实用程序
  • 改进的 std::chrono库
  • 布尔运算符的介绍(std::conjunction, std::disjunction, std::negation)
  • std 中 noexcept 使用的规则

已弃用的功能:

  • 删除一些 C 库、、result_of 和其他

以上是C 17 中引入了哪些关键语言和库功能?的详细内容。更多信息请关注PHP中文网其他相关文章!

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