C++17
以下特性已被合入 C++17 中:
- 从技术规范中:文件系统库,库基础 v1 (包括 optional, any, string_view, polymorphic allocators, 搜索器, apply),并行库 v1 (包括 执行策略, reduce, inclusive_scan, exclusive_scan),但不包括
exception_list
。从特殊数学函数 IS 中:数学特殊函数,从库基础 v2 中:std::gcd, std::lcm - 从 C11 中:std::aligned_alloc, std::timespec_get
废弃
移除
auto_ptr, 之前已被声明弃用的函数对象, std::random_shuffle, std::unexpected, the obsolete iostreams aliases, 三标符, register 关键字, bool 类型的自增操作
声明弃用
std::iterator
,
std::raw_storage_iterator
,
std::get_temporary_buffer
,
std::is_literal_type
,
std::result_of
,
整个 <codecvt>
头文件
新的语言特性
- 折叠表达式
- 类模板实参推导
- auto 占位的非类型模板参数
- 编译期的 constexpr if 语句
- 内联变量
- 结构化绑定
- if 和 switch 语句中的初始化器
- u8-char
- 简化的嵌套命名空间
- using 声明语句可以声明多个名称
- 将 noexcept 作为类型系统签名的一部分
- 新的求值顺序规则
- 强制的复制消除
- lambda 表达式捕获 *this
- constexpr 的 lambda 表达式
- attribute namespaces don't have to repeat
- 新属性
[[fallthrough]]
[[nodiscard]]
和[[maybe_unused]]
. - __has_include
新的头文件
新的库特性
utility 中
memory 中
- weak_from_this
- polymorphic allocators
- aligned_alloc
- transparent owner_less
- 针对数组的 shared_ptr 支持
- 具有显式对齐要求的分配函数
- variadic lock_guard
- cache line interface
types 中
- byte
- conjunction/disjunction/negation
- 类型特性中的辅助变量模板 xxx_v
- is_swappable
- is_invocable
- is_aggregate
- has_unique_object_representations.
algorithm 中
容器库 相关
- map/set 中的 extract 方法和 merge 方法
- map/unordered_map 中的 try_emplace 方法和 insert_or_assign 方法
- 连续迭代器
- 非成员函数 size/empty/data