C++ 中文周刊 第17期

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

每周更新

周刊项目地址 github在线地址知乎专栏

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


资讯

编译器信息最新动态推荐关注hellogcc公众号

本周周报github直达

文章

介绍small_vector, small_vector有很多实现,算是一个小对象优化

#include <cassert>

consteval int f(int i) { return i; }

constexpr int g(int i) {
    if consteval {
        return f(i) + 1; // ok: immediate function context
    } else {
        return 42;
    }
}

consteval int h(int i) {
    return f(i) + 1; // ok: immediate function context
}

static_assert(42 + 1 == h(42));

int main() {
  int i = 42;
  //h(i); // error: the value of 'i' is not usable in a constant expression
  assert(42 == g(i));
}

https://godbolt.org/z/rjeodeMoP

用concept来实现CRTP模式,遇到了很多阻碍,如果有Unified Function Call Syntax , UFCS说不定能解决,当前不推荐,可以当做一个拓展眼界的思路看一看

总结整理写的挺好

TODO 不懂LLVM IR,后面了解一下

介绍一个快的循环队列,其实技巧就是mmap + bip buffer类似的技术 代码在这里

介绍brpc的小组件,brpc的小技巧很多,文档也很详细,值得一看

用原子量自旋来实现的mutex,代码在这里

TODO: 阅读 Futexes Are Tricky

介绍了模版参数的一些场景

介绍duckdb数据结构设计的,有点意思

leveldb写路径代码走读

视频

项目

#include "matchit/core.h"
#include "matchit/patterns.h"
#include "matchit/expression.h"
using namespace matchit;

constexpr int32_t factorial(int32_t n)
{
    assert(n >= 0);
    return match(n)(
        pattern(0) = expr(1),
        pattern(_) = [n] { return n * factorial(n - 1); }
    );
}

本文永久链接

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