周刊项目地址 https://github.com/wanghenshui/cppweeklynews
RSS https://github.com/wanghenshui/cppweeklynews/releases.atom
欢迎投稿,推荐或自荐文章/软件/资源等
请评论区留言
感谢黄亮anthony赞助
大家新年快乐
群友投稿
群友讨论了一个场景
地址居然是可交换的,显然这是UB
std::allocator_traits::propagate_on_container_swap::value If std::allocator_traits::propagate_on_container_swap::value is true, then the allocators are exchanged using an unqualified call to non-member swap. Otherwise, they are not swapped (and if get_allocator() != other.get_allocator(), the behavior is undefined). https://en.cppreference.com/w/cpp/container/vector/swap
资讯
标准委员会动态/ide/编译器信息放在这里
编译器信息最新动态推荐关注hellogcc公众号 本周更新 2023-12-27 第234期
文章- 1. 基于 c executions的异步实现 - 从理论到实践 https://zhuanlan.zhihu.com/p/675374590
- • 2 基于 c executions的异步实现 - libunifex的使用与实现概述 https://zhuanlan.zhihu.com/p/675374932
- 1. exectuions 依赖的管道实现 - 在C 中实现LINQ https://zhuanlan.zhihu.com/p/675375237
- 1. executions 依赖的定制机制 - 揭秘 cpo与tag_invoke! https://zhuanlan.zhihu.com/p/675375376
- 1. 基于 c executions的异步实现 - libunifex中的concepts详解 https://zhuanlan.zhihu.com/p/675375661
- 1. 基于 c executions的异步实现 - strutured concurrency实现解析 https://zhuanlan.zhihu.com/p/675375816
- 1. 基于 c executions的异步实现 - libunifex的scheduler实现 https://zhuanlan.zhihu.com/p/675376944
沈芳的一波execution文章,写得不错,学吧,都是知识
- • 跟我学c 中级篇——再谈C 20中的协程
还是协程,再看一遍
- • Some Informal Remarks Towards a New Theory of Trait Customization https://sdowney.org/index.php/2023/12/24/some-informal-remarks-towards-a-new-theory-of-trait-customization/
tag_invoke疑似有点太泛型了,作者觉得还是rust traits直观,提出了个traits object的概念
看代码 https://godbolt.org/z/Ge43cWfn8
挺好的。之前132期提到定制log就是类似的技术
- • Did you know about C 26 static reflection proposal (1/N)? https://github.com/tip-of-the-week/cpp/blob/master/tips/361.md
- • Enforcing that static local variables only exist once https://www.think-cell.com/en/career/devblog/enforcing-that-static-local-variables-only-exist-once
众所周知,static局部对象只初始化一次
但如果DoWork或者ExpensiveInitialization变成模版函数,是不是意味着 static每个函数都构建一次?破坏了语义?
作者提出了一种模版特化校验的方法
没有任何额外开销 https://godbolt.org/z/hcEWeqf6P
就是我没看明白怎么用的
raymond chen windows环节
- • How to allocate address space with a custom alignment or in a custom address region https://devblogs.microsoft.com/oldnewthing/20231229-00/?p=109204)
- • What does it mean when the compiler says that it can’t convert something to itself https://devblogs.microsoft.com/oldnewthing/20231227-00/?p=109195
视频
My favourite memory leak - Björn Fahller - Lightning Talks @ Meeting C 2023 https://www.youtube.com/watch?v=LKKmPAQFNgE&ab_channel=MeetingCpp
一段会泄漏内存的抽象代码
非常幽默
众所周知,vector是三个指针,begin end storend三部分,swap交换自己的时候,这三个指针怎么赋值?
当然,写成c就更容易懂了 (感谢群友@只看封面)
V相当于 class V { V* data;}
Implementing coroutines using C 17 - Alon Wolf - Lightning Talks @ Meeting C 2023 https://www.youtube.com/watch?v=VC_3eqLFcCo&ab_channel=MeetingCpp
看不太懂,也没放源代码。感觉是用intel的jmp汇编和goto搞跳转
开源项目
- • asteria https://github.com/lhmouse/asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群753302367和作者对线
- • Unilang https://github.com/linuxdeepin/unilang deepin的一个通用编程语言,点子有点意思,也缺人,感兴趣的可以github讨论区或者deepin论坛看一看。这里也挂着长期推荐了
- • https://github.com/PickNikRobotics/data_tamer 一个时间采集数据结构,类似bvar
- • https://github.com/Futureblur/magnet 又一个包管理器
- • https://github.com/proh14/ptext 一个类似nano的编辑器
- • https://github.com/germandiagogomez/words-counter-benchmarks-game 一个word count各种实现压测比较
- • https://github.com/tdanyluk/bgi2 BGI2 (Beginners' Graphic Interface 2) library 看不懂是啥
- • https://github.com/spacewalk01/nanosam-cpp C TensorRT Implementation of NanoSAM 不知道是啥
- • https://github.com/ChristianPanov/lwlog 又一个日志库