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

C++ 中文周刊 第74期

作者头像
王很水
发布2022-09-21 20:15:35
2820
发布2022-09-21 20:15:35
举报

C++ 中文周刊 第74期

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

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

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

2022 0808


资讯

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

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

文章

c++的bind和网络库的bind符号冲突了。很搞笑。不过在linux环境下没有这个问题 我之前在windows平台遇到过log日志接口和cmath的log函数有符号冲突。msvc这个方面做的不是很好

代码语言:javascript
复制
/*
divide_by_32_no_assume(int):
        lea     eax, [rdi + 31]
        test    edi, edi
        cmovns  eax, edi
        sar     eax, 5
        ret
*/
auto divide_by_32_no_assume(int x) {
    return x / 32;
}


/*
divide_by_32_assume(int):
        mov     eax, edi
        shr     eax, 5
        ret
*/
auto divide_by_32_assume(int x) {
    __builtin_assume(x >= 0);
    return x / 32;
}

这个之前提到过,有个经典的fast-math开关优化。那个力度比较大。这里你可以自主控制,力度更精细一些

同一个代码段 c和c++有很大区别。主要是逗号表达式,左值右值,位域,类型转换,类型大小,空类型,匿名结构体等等。感兴趣的可以看看。

介绍TSAN的原理

介绍内核内存分配策略

用c++实现structopt, 看个乐

没看明白

一个bug

代码语言:javascript
复制
template<class It>
bool is_palindrome(It first, It last) {
    while (first != last) {
        --last;
        if (first == last) break;
        if (*first != *last) {
            return false;
        }
        ++first;
    }
    return true;
}

很自然的,可以改写成

代码语言:javascript
复制
template<class It>
bool is_palindrome(It first, It last) {
    return std::equal(
        first, last,
        std::reverse_iterator(last),
        std::reverse_iterator(first)
    );
}

这里没用make_reverse_iterator,用的CTAD自动推导。但是这个推导可能不是我们预想的那样

代码语言:javascript
复制
std::string s = "foo";
assert(!is_palindrome(s.begin(), s.end()));
assert(is_palindrome(s.begin()+1, s.end()));
assert(!is_palindrome(s.rbegin(), s.rend()));
assert(is_palindrome(s.rbegin(), s.rend()-1));  // Fails! Oof!

最后两个例子,已经是reverse的iterator, CTAD什么都不做,而不是推导成 reverse_iterator<iterator>这种东西,所以报错了

尽量别用CTAD。降低入门门槛但是引入了背景,不熟就掉坑

开源项目需要人手

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

新项目介绍/版本更新

工作招聘

有没有需要看大门的,要被毕业了


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

本文永久链接

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

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

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

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

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