Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

0cch/moderncpp_public

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

25 Commits

Repository files navigation

《现代C++语言核心特性解析》补充资料

1. C++23标准补充

PDF电子书:查看和下载

C++23标准相比之前的C++20、C++11对于标准的修改并不算大,因此不会对我们编写代码的方式有太大影响,甚至有一些变化是内部发生的,对于大部分人来说可能完全感受不到变化的存在,例如"标识符语法使用UAX31"。如果一定要选择对我们编码有一些影响的,我觉得"显式对象参数"和"多维下标运算符"可以算上,这些特性在C++23标准中算是比较大语法新增项。当然,上述特性还是远不及lambda表达式、不定参数模板、概念和约束等影响深远。总体来说,C++23标准有点类似于C++14标准,主要是对以前标准行为的澄清以及删除以前弃用的功能或放宽限制。

更多的变化可能需要等到C++26标准,包括主要的Execution(执行策略 ),More Ranges work(更多关于范围的工作),Reflection(反射),以及次要的Contracts(契约)和Pattern Matching(模式匹配)。

简单聊几个有趣的特性:

显式对象参数

C++23标准可以使用显式对象参数作为非静态成员函数的第一个参数,即this T self,其中T是模板参数的情况下,编译器可以推导对象CV属性和值类型。

允许重复属性

删除过去标准中对属性重复不必要的限制。

signed size_t 和 size_t 的字面量后缀 z 和 uz

更加容易声明size_t的数据类型了,在类型推导中比较有用。

多维下标运算符

operator[](std::size_t x, std::size_t y)的语法获得了支持,终于有更好的办法表示矩阵等多维数据的元素了。

目录预览:

0. 前言
1. 支持预处理指令 #elifdef 和 #elifndef 
2. 允许重复属性
3. 允许static_assert声明在与求值无关的模板上下文
4. assume 属性
5. 初始化语句允许别名声明
6. 允许在lambda表达式上使用属性
7. 引入auto(x)和auto{x}代替decay-copy
8. char8_t兼容性和可移植性修复
9. 引入翻译字符集
10. consteval if 语句
11. 分隔的转义序列
12. 显式对象参数
13. 标识符语法使用UAX31
14. 允许复合语句末尾的标签(与C语言兼容)
15. signed size_t 和 size_t 的字面量后缀 z 和 uz
16. 可选的lambda表达式中的括号
17. 强制的类成员声明顺序布局
18. 多维下标运算符
19. 具名通用字符转义
20. 明确static_assert 和if constexpr支持bool缩窄转换
21. 允许非字面量变量和goto语句的常量表达式函数
22. 进一步放宽常量表达式函数的限制
23. 禁止混合字符串字面量的连接
24. 删除不可编码的宽字符和多字宽字符字面量
25. 可选的扩展浮点类型
26. 允许static_asserts参数与if constexpr条件语句缩窄转换到bool类型
27. 静态下标运算符函数
28. 支持UTF-8作为可移植源文件编码
29. 明确==和!=操作符的生成规则
30. 修剪行拼接符后的空格
31. 支持#warning预处理指令
32. 更简单的隐式移动
33. 静态函数调用运算符函数

2. 《每天5分钟了解C++新特性》视频PPT

这是一套关于《现代C++语言核心特性解析》的介绍视频,分为42集每集5分钟,概括地介绍了《现代C++语言核心特性解析》里的内容,对于想了解C++新特性但是没时间或者不想深入了解的朋友可能会有一些帮助。

About

《现代C++语言核心特性解析》其他资料

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /