欢迎投稿,推荐或自荐文章/软件/资源等,评论区留言
本期文章由 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
一年一度的调查问卷报告出了,样本有点少,说几个有意思的数据
感兴趣的可以自己看一下,大部分都是图
群里聊到小红书看到的一个move优化不生效的问题
https://quick-bench.com/q/P-nqRmfT4ChFdNHHd9NCFALRRDI
经过群里的压测比较,并没有明显差异
大家有其他见解也可以补充
省流:用std::size
c里有一种检查数组长度的方法 sizeof(a) / sizeof(a[0])
现在是2024年,有没有一种优雅的方法呢
显然你会说 用vector/array ,先别走这么远,先来个尝试
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 咱们终于现代了
template <typename T, size_t N>
constexpr size_t countof(T (&arr)[N]) noexcept
{
return N;
}
都支持数组,顺便给vector啥的也支持上
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是最合理的,不要自己算,错误会被忽略掉
之前发过了,没看的再看看哈,这个思路还是挺清晰的
学学LLVM
module现状调查,哈哈,没有能用的大项目,没错,2020的东西到2024年也没做好
理解不了,有看懂的可以讲讲,我觉得有点为了秀而秀,没必要
TLDR 有两个地方有异常,但只catch一处
TODO 没看懂
看一乐