C++ 中文周刊 第108期

周刊项目地址

公众号

RSS https://github.com/wanghenshui/cppweeklynews/releases.atom

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

提交 issue

本周内容不多,但是比较难理解


资讯

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

编译器信息最新动态推荐关注hellogcc公众号 上周更新 2023-03-29 第195期

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

Xmake v2.7.8 发布,改进包虚拟环境和构建速度 https://tboox.org/cn/2023/04/04/xmake-update-v2.7.8/

文章

虚基类

struct A {
    int a{};
};
struct B : virtual A {};
struct C : virtual A {};
struct D : B, C {};

int main() {
    D d{};
    d.a = {};  // without virtual -> request for member 'a' is ambiguous
}

介绍协程应用以及如何更好的封装成Lazy类

LTO/PGO 涨涨见识

了解一波fuzzer。据我了解应用的很少

感觉就是分层

gcc优化技术债,把iostream的依赖减小了

和Folly的Sync<T>一个东西, 帮你把mutex和你的值装在一起,免得你自己调用lock unlock

使用

struct Thing {
    MutexProtected<Field> field;
};

thing->field.with([&](Field& field) {
    use(field);
});

代码 https://github.com/SerenityOS/serenity/blob/master/Kernel/Locking/MutexProtected.h

[uuid(a6107c25-4c22-4a12-8440-7eb8f5972e50)]
class Widget : public IWidget
{
    /* ... */
};

这代码啥意思? MSVC方言

有异常不处理,遇到了会给你一种代码挂住了没执行的感觉,尤其是在协程内

winrt::IAsyncAction DoAwesomeThings()
{
    co_await promise.initial_suspend();
    try {
        Step1();
        printf("About to call Step2!\n");
        Step2();
        printf("Step2 returned!\n"); // never executes!
        Step3();
    } catch (...) {
        promise.unhandled_exception();
    }
    co_await promise.final_suspend();
}

push_back 当你想把已有的临时对象放到你的vector或者想把已有的对象move到你的vector

emplace_back 当你想创建临时对象,放到你的vector,没必要创建个临时对象再push_back

开源项目需要人手

工作招聘

感觉有点干够了这个活。有没有啥岗位推荐的


本文永久链接

如果有疑问评论最好在上面链接到评论区里评论,这样方便搜索,微信公众号有点封闭/知乎吞评论

看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持! 觉得写的不错那就给点吧, 在线乞讨 微信转账