# moderncpp_public **Repository Path**: vulkan/moderncpp_public ## Basic Information - **Project Name**: moderncpp_public - **Description**: No description available - **Primary Language**: C++ - **License**: GPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-05 - **Last Updated**: 2024-02-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 《现代C++语言核心特性解析》补充资料 ## 1. C++23标准补充 PDF电子书:[**查看和下载**](https://github.com/0cch/moderncpp_public/blob/main/pdf/cpp23.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++新特性但是没时间或者不想深入了解的朋友可能会有一些帮助。 - [B站合集视频地址](https://space.bilibili.com/3493295527299091/channel/collectiondetail?sid=1626636&ctype=0) - [PPT地址](https://github.com/0cch/moderncpp_public/tree/main/ppt)