File tree Expand file tree Collapse file tree 1 file changed +13
-0
lines changed
Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change @@ -48,6 +48,7 @@ date: 2024-10-01
4848- [ 属性说明符和标准属性(C++11~C++20)] ( #属性说明符和标准属性c11c20 )
4949- [ 新增预处理器和宏(C++17 C++20)] ( #新增预处理器和宏c17-c20 )
5050- [ 协程(C++20)] ( #协程c20 )
51+ - [ 基础特性的其他优化(C++11~C++20)] ( #基础特性的其他优化c11c20 )
5152
5253## 新基础类型(C++11~C++20)
5354
@@ -588,4 +589,16 @@ C++11引入可变参数宏`__VA_ARGS__`。C++20引入`__VA_OPT__`令可变参数
588589
589590应该尽量将协程和future和generator一起使用。协程并不会自动执行异步操作。
590591
592+ // TODO:具体实现未看
591593
594+ ## 基础特性的其他优化(C++11~C++20)
595+
596+ C++11支持显示自定义类型转换运算符,但是会有意想不到的结果。单参数的构造函数也会造成类型的隐式转换,可以通过添加前缀` explicit ` 来避免这个问题。对于布尔转换,在某些期待上下文为bool类型的语境中,可以隐式进行转换,即使已经被声明为显示。
597+
598+ ` std::launder() ` 在C++17引入。C++标准规定:如果新的对象在已被某个对象占用的内存上进行构建,那么原始对象的指针、引用以及对象名都会自动转向新的对象,除非对象是一个常量类型或对象中有常量数据成员或者引用类型。std::launder可以防止编译器追踪到数据的来源以阻止编译器对数据的优化。
599+
600+ 返回值优化。但实际上的返回值优化是很容易失效的。传引用和移动语义都可以在一定程度上取代返回值优化。
601+
602+ C++20:按值进行默认比较。支持new表达式推导数组长度。
603+
604+ // TODO:一些C++20小的新特性未看
You can’t perform that action at this time.
0 commit comments