前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 中文周刊 2024-04-13 第154期

C++ 中文周刊 2024-04-13 第154期

作者头像
王很水
发布2024-07-30 15:07:34
770
发布2024-07-30 15:07:34
举报
文章被收录于专栏:C++ 动态新闻推送

欢迎投稿,推荐或自荐文章/软件/资源等,评论区留言

本期文章由 HNY 啃萝卜 赞助

资讯

标准委员会动态/ide/编译器信息放在这里

编译器信息最新动态推荐关注hellogcc公众号 本周更新 2024-04-03 第248期

clion 新版本发布 https://www.jetbrains.com/clion/whatsnew/#v20241-apr-09

Results summary: 2024 Annual C++ Developer Survey "Lite" https://isocpp.org/files/papers/CppDevSurvey-2024-summary.pdf

一年一度的调查问卷报告出了,样本有点少,说几个有意思的数据

  • • c++ 五年以上经验 占80% 大家都是老登
  • • 大部分使用c++17特性
  • • 主要痛点在环境/脚手架/编译时间/调试 module什么时候能好用我操了
  • • c++20 特性 concept/coroutine/module concept接受程度最高(module没法用吧,coroutine主要是传染性,不想改代码)

感兴趣的可以自己看一下,大部分都是图

文章

move性能下降?

群里聊到小红书看到的一个move优化不生效的问题

https://quick-bench.com/q/P-nqRmfT4ChFdNHHd9NCFALRRDI

经过群里的压测比较,并没有明显差异

大家有其他见解也可以补充

How not to check array size in C++ https://pvs-studio.com/en/blog/posts/cpp/1112/

省流:用std::size

c里有一种检查数组长度的方法 sizeof(a) / sizeof(a[0])

现在是2024年,有没有一种优雅的方法呢

显然你会说 用vector/array ,先别走这么远,先来个尝试

代码语言:javascript
复制
template <typename T, size_t N>
char (&ArraySizeHelper(T (&array)[N]))[N];

#define countof(array) (sizeof(ArraySizeHelper(array)))

看懂发生了什么吗,这个ArraySizeHelper是个函数模版,接受T(&)[N] 返回一个char(&)[N] 然后你就拿到了N

为什么不实现,我靠,你要是实现了玩意真有傻逼同事用咋办,就在sizeof里用用得了

多么扭曲的写法,想出这玩意的人排便通畅吗,就不怕被同事打吗

后来到了c++11 咱们终于现代了

代码语言:javascript
复制
template <typename T, size_t N>
constexpr size_t countof(T (&arr)[N]) noexcept
{
  return N;
}

都支持数组,顺便给vector啥的也支持上

代码语言:javascript
复制
template <typename Cont>
constexpr auto countof(const Cont &cont) -> decltype(cont.size())
  noexcept(noexcept(cont.size()))
{
  return cont.size();
}

我操,是不是重新发明了 std::size https://en.cppreference.com/w/cpp/iterator/size 哈哈c++17才支持

两个指针怎么办,可能你会说自己算被,用std::distance

上一期我们讲的范围问题还记得吗,转成range 拿range.size是最合理的,不要自己算,错误会被忽略掉

译-Debugging a futex crash

之前发过了,没看的再看看哈,这个思路还是挺清晰的

LLVM IR 初探(0x00) alloca / 基本块 / getelementptr 踩坑 https://zhuanlan.zhihu.com/p/690032669

学学LLVM

C++20 modules and Boost: an analysis https://anarthal.github.io/cppblog/modules

module现状调查,哈哈,没有能用的大项目,没错,2020的东西到2024年也没做好

Abstract Strategy Tree https://atlas-blog.vercel.app/ast

理解不了,有看懂的可以讲讲,我觉得有点为了秀而秀,没必要

The case of the exception that a catch (…) didn’t catch https://devblogs.microsoft.com/oldnewthing/20240405-00/?p=109621

TLDR 有两个地方有异常,但只catch一处

The Simple Beauty of XOR Floating Point Compression https://clemenswinter.com/2024/04/07/the-simple-beauty-of-xor-floating-point-compression/

TODO 没看懂

C++协程——等待的艺术awaitable https://zhuanlan.zhihu.com/p/683764594

看一乐

开源项目介绍

  • • https://github.com/lhmouse/asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群753302367和作者对线
  • • https://github.com/zeus-cpp/expected 实现了expect c++17版本,我怎么记得有人实现过了
  • • https://github.com/karpathy/llm.c 一个llm简单实现
  • • https://github.com/pika-org/pika 一个sender reciver实现,感觉是fork的hpc然后拼一下std::exec
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CPP每周推送 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资讯
  • 文章
    • move性能下降?
      • How not to check array size in C++ https://pvs-studio.com/en/blog/posts/cpp/1112/
        • 译-Debugging a futex crash
          • LLVM IR 初探(0x00) alloca / 基本块 / getelementptr 踩坑 https://zhuanlan.zhihu.com/p/690032669
            • C++20 modules and Boost: an analysis https://anarthal.github.io/cppblog/modules
              • Abstract Strategy Tree https://atlas-blog.vercel.app/ast
                • The case of the exception that a catch (…) didn’t catch https://devblogs.microsoft.com/oldnewthing/20240405-00/?p=109621
                  • The Simple Beauty of XOR Floating Point Compression https://clemenswinter.com/2024/04/07/the-simple-beauty-of-xor-floating-point-compression/
                    • C++协程——等待的艺术awaitable https://zhuanlan.zhihu.com/p/683764594
                    • 开源项目介绍
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档