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 及相关特征的介绍
文件系统库:
新算法:
- 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 17 中引入了哪些关键语言和库功能?的详细内容。更多信息请关注PHP中文网其他相关文章!