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

C++ 中文周刊 第76期

作者头像
王很水
发布2022-09-23 08:57:33
2300
发布2022-09-23 08:57:33
举报

C++ 中文周刊 第76期

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

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

腾讯云+社区

弄了个qq频道,手机qq点击进入

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

可以贴在下一期草稿里 链接

2022 08 19


资讯

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

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

文章

类似folly::Poly

代码在https://github.com/microsoft/proxy

代码语言:javascript
复制
std::expected<std::vector<int>, Status> ReadData()
{
   if (!HasAcccess())
      return std::unexpected<Status> { Status::AccessDenied };
   if (OpenConnection() != 0)
      return std::unexpected<Status> {Status::DataSourceError};
   if (Fetch() != 0)
      return std::unexpected<Status> {Status::DataError};
   std::vector<int> data;
   data.push_back(42);
   return data;
}

相当于 StatusWith<T>这种组件

代码语言:javascript
复制
void report_error();
[[gnu::cold]] void report_error_cold();
void logic();

/*
cold(bool):
        test    edi, edi
        jne     .LBB0_1
        jmp     logic()
.LBB0_1:
        jmp     report_error_cold()
*/
auto cold(bool error) {
    if (error) {
        report_error_cold();
        return;
    }

    logic();
}

/*
normal(bool):
        test    edi, edi
        je      .LBB1_2
        jmp     report_error()
.LBB1_2:
        jmp     logic()
*/
auto normal(bool error) {
    if (error) {
        report_error();
        return;
    }

    logic();
}

/*
unlikely(bool):
        test    edi, edi
        jne     .LBB2_1
        jmp     logic()
.LBB2_1:
        jmp     report_error()
*/
auto unlikely(bool error) {
    if (error) [[unlikely]] {
        report_error();
        return;
    }

    logic();
}

对代码优化有点帮助。之前也介绍过

对比了一下各种atomic 锁之类的差异

看个乐

这个优化了解一下

视频

代码语言:javascript
复制
// #embed 支持
//#embed </path/to/file.txt>

//constexpr 部分支持
// not allowed in c23 :(
//constexpr int get_value() {
//  return 42;
//}
// allowed in c23!
constexpr int universe_and_everything = 42;

// [[attributes]]支持
[[nodiscard]] int get_value();
// deprecated, fallthrough, maybe_unused, nodiscard, noreturn

// 未命名参数
int do_work(int x, int)
{
  return x * 23;
}

// 类型枚举
enum MyEnum : char {
  x,
  y
};

// #6 __has_include
#if __has_include("somefile")
#include("somefile");
#endif

开源项目需要人手

  • asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群384042845和作者对线
  • pika 一个nosql 存储, redis over rocksdb,非常需要人贡献代码胖友们, 感兴趣的欢迎加群294254078前来对线

新项目介绍/版本更新

  • bloaty 查看代码的膨胀程度
  • passgen 根据指定正则生成密码
  • async_simple 协程库,阿里的,有demo。不过是部分开源
  • natalie c++写的ruby
  • jank c++写的Clojure

工作招聘

解不出bug要被开了


看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持!

本文永久链接

代码语言:txt
复制
     This site is open source. [Improve this page](https://github.com/wanghenshui/cppweeklynews/edit/dev/posts/076.md).
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++ 中文周刊 第76期
    • 资讯
      • 文章
        • 视频
          • 开源项目需要人手
            • 新项目介绍/版本更新
              • 工作招聘
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档