Skip to content

Latest commit

 

History

History
203 lines (114 loc) · 8.13 KB

054.md

File metadata and controls

203 lines (114 loc) · 8.13 KB
layout title
post
第54期

C++ 中文周刊 第54期

reddit/hackernews/lobsters/meetingcpp摘抄一些c++动态

周刊项目地址在线地址知乎专栏 |腾讯云+社区

欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue


资讯

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

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

文章

看不懂说的啥

讨论了ABI带来的兼容问题

第五版优化用上了arm的sse指令重写

学习一下

join_view

using namespace std::ranges;
auto l_as_string = []<typename R>(R range){
   return std::string(std::begin(range), std::end(range));
};
std::vector<std::string> words{"this", "is", "a", "demo"};
auto text = l_as_string(words | views::join_with(' '));
std::cout << text << '\n'; // "this is a demo"

zip_view

先看个zip

std::array<int, 4> n{ 1, 2, 3, 4 };
std::vector<std::string> w{ "one","two","three" };
auto z1 = views::zip(n, w) // { (1, "one"), (2, "two"), (3, "three") }
for(auto t : z1)
   std::cout << std::get<0>(t) << '-' 
             << std::get<1>(t) << '\n';

zip_view

auto l_concat = [](int n, std::string const& s) {
   return std::to_string(n) + "-" + s;
};
auto z2 = views::zip_transform(l_concat, n, w); // {"1-one", "2-two", "3-three"}
for (auto e : z2) 
   std::cout << e << '\n';
  • overload 167 这是个期刊,每期都会录入几篇文章,文章很长。内容标题是
    • What are you optimizing for? 没啥说的
    • Revisiting Data-Oriented Design
    • An Associative Container for Non-bash Shell Scripts
    • C++20 Benefits: Consistency With Ranges

没啥值得说的

讲llvm给wasm减少体积

开发simulater遇到的问题 代码在这里

讲作者怎么发现的这个缺陷以及复现过程,做安全的朋友可以看看。简单来说就是数组边界没检查,但触发这个场景构造了挺多东西

视频

尽量用static constexpr,编译期。快。有人用压测挑战了up主,说static constexpr并不比constexpr快,并给了一个bench链接,这个视频是作者的调试过程。简单来说,那个bench场景有问题,数据小,数据局部性太高,constexpr默认是栈变量,cache友好的结果,实际上数据量一大 static constexpr明显优于constexpr

更新一波cppcon 2021

对clang感兴趣的可以看看

讲所有权的。感兴趣的可以看看

嵌入式场景编译器优化减小程序体积 体积影响分发。从二进制角度观测/评估哪里可以省掉,用bloaty查 比如strip 减少内联 (__attribute__((noinline)))/模板实例化以及二进制工具修改 编译选项,-Os -flto -Wl,--strip-all (不要-g) -fno-unroll-loops -fno-exception -fno-rtti 以及编译器本身提供的减少体积的选项,比如thin-lto(llvm) -fmerge-all-constant -mllvm hot-cold-split

代码组织上,不要继承不要类不要lambda,不要复制,实现移出头文件,数据结构简单就好,算法用简单的,不需要考虑性能问题,够用,拷贝尽量用memcpy

还有一些邪魔外道我没有列出。后面直接贴出ppt链接,有兴趣的可以点视频看看

谁用vscode调代码啊,你用吗,我不用。

如果一个类只声明不实现,不能保证成员函数是noexpect(true)的(析构函数除外),之前咱们也聊过zero cost exception相关 这个视频讨论了noexcept的方方面面。比较深入。值得一看。

实现variant/访问需要注意一些问题。AA手把手带你写代码

介绍gdb新特性,新命令,和python更好的交互等等。没细看

VS的静态检测工具,分析分支,跟踪指针生命周期

讲哲学的,太抽象了。没看

msvc的chrono实现。如何支持date timezone等等,API走读(评论区评论非常多。难道是妹子解说就人多吗)

讲range view的。对相关概念感兴趣的可以看看

手把手教你解bug

介绍boostext.ut 这个库用用户自定义前缀 UDL来实现单测的模型,而不是用宏展开。比较优雅。之前也介绍过

讲哲学的我是真听不进去

cppp

介绍SEH的

手把手带你看汇编。这个视频好像推了好几次了。真的值得一看

开源项目需要人手

  • asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群753302367和作者对线

新项目介绍/版本更新

工作招聘


本文永久链接