专栏首页C++ 动态新闻推送C++ 动态新闻推送 第16期

C++ 动态新闻推送 第16期

C++ 动态新闻推送 第16期

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

每周更新

周刊项目地址 github,在线地址

discord讨论群组 |飞书讨论群组|知乎专栏

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


资讯

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

本周周报github直达

一些软件的更新,clion/qt等等不多说了

最近c++的提案进展

修正if constexpr的bug P1938,比如这段代码 if constexpr (std::is_constant_evaluated())

constexpr size_t strlen(char const* s) {
    if constexpr (std::is_constant_evaluated()) {
        for (const char *p = s; ; ++p) {
            if (*p == '\0') {
                return static_cast<std::size_t>(p - s);
            }
        }    
    } else {
        __asm__("SSE 4.2 insanity");        
    }
}

修复string从nullptr构造的错误 P2166

out_ptr and inout_ptr 帮助指示指针所有权 P1132

加上 ranges::starts_withand ranges::ends_with让string操作更流畅 P1659

让static_assert中的值默认为bool P1401

Today If accepted if constexpr(bool(flags & Flags::Exec)) if constexpr(flags & Flags::Exec) if constexpr((flags & Flags::Exec) != 0) if constexpr(flags & Flags::Exec) static_assert(bool(N)); static_assert(N); static_assert(N % 4 != 0); static_assert(N % 4);

Concurrency TS:又开始了, P1121 and P1122 hazard pointers read-copy-update (RCU) 这终于要进入大众视野里,好事一件

文章

这篇文章里提到了一个方法,帮助测试代码的

可以使用-fno-access-control 编译你的测试代码,可以使 g++关闭 c++成员的访问控制(即 protected 及 private 不再生效)

从来没注意过,很有意思

如何实现python中的namedtuple?

from collections import namedtuple

nt = namedtuple("price", "size")

nt.price = 42;
nt.size = 100;

assert 42 == nt.price and 100 == nt.size

看起来像map,但是和tuple无缝衔接

最简单的思路就是记住name到index的映射,再从index拿到tuple的元素,也就是map+tuple的组合

比如Poco.NamedTuple.h 这个name是有限的

现在2021了,都是变参模版了,用这个方法也不是不可以,但是从tuple本身的角度来考虑

name 字符串本身可以封装成tuple,一个最简单的一个元素的name tuple也是tuple,所以name tuple就是普通tuple的二倍了

现在的问题是如何get,但是tuple只支持type定位,而name 是字符串,一个tuple有很多string就不能保证唯一性了,所以通过模版封装name成一个新类型,模版,每个类型都不一样,就解决了这个问题,能定位到name_type,当然就能找到下一个元素

类似的实现思路,见这个仓库 https://github.com/erez-strauss/named_tuples

一个windows下动态库加载失败的问题定位

require里混着require,各种编译器行为不一致(没有展示过这个例子之前我没想过可以这么写)

template<class T>
concept HasAButNotB = requires (T t) {
    t.a();
    !requires { t.b(); };
};

struct S1 {};
struct S2 { void a(); };
struct S3 { void b(); };
struct S4 { void a(); void b(); };

static_assert(!HasAButNotB<S1>);  // as expected
static_assert(HasAButNotB<S2>);   // as expected
static_assert(!HasAButNotB<S3>);  // as expected
static_assert(HasAButNotB<S4>);   // ...oops!

简单介绍了浮点型的坑

讨论了几种匹配重载,tag dispatch技巧和enable_if/concept

  • float exposed https://float.exposed/0x000993d518d1e7e3 一个计算器,显示二进制的

视频

上一期讨论了某种场景下pair可能还不如普通的struct效果好,这里讲了几个技巧来确认这种问题,通过关键字 平凡构造之类的。tldr: 能用标准库就用,一般不是热点

  • https://pages.jetbrains.com/cppnow2021 jetbrains又更新了一些c++now的视频,看样子是每个月一更的节奏,上个月只发了六个 这次更新非常的多 三十多个,我不可能看得完。后面有时间再看吧,有看了的朋友可以分享一下总结的内容

项目

  • https://github.com/snej/tails 一个forth 语言的c++实现
  • https://github.com/Stiffstream/arataga 用sobjecter实现的一个socks/http server,这里有详细介绍

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

本文永久链接

This site is open source. Improve this page.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++ 动态新闻推送 第34期

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

    王很水
  • C++ 动态新闻推送 第35期

    怎么保证一个函数只被调用一次呢,这里有个点子,Destructive separation: move away and call Matt Godbolt a...

    王很水
  • C++ 动态新闻推送 第33期

    很多代码场景下c++的灵活性要高于强制安全检查,且一些场景下rust生成的汇编不如c++少

    王很水
  • C++ 动态新闻推送 第37期

    VS 2022出了 Visual Studio 2022 now available

    王很水
  • C++ 动态新闻推送 第26期

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

    王很水
  • C++ 动态新闻推送 第25期

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

    王很水
  • C++ 动态新闻推送 第24期

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

    王很水
  • C++ 动态新闻推送 第23期

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

    王很水
  • C++ 动态新闻推送 第22期

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

    王很水
  • C++ 动态新闻推送 第21期

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

    王很水
  • C++ 动态新闻推送 第20期

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

    王很水
  • C++ 动态新闻推送 第19期

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

    王很水
  • C++ 动态新闻推送 第18期

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

    王很水
  • C++ 动态新闻推送 第17期

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

    王很水
  • C++ 动态新闻推送 第15期

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

    王很水
  • C++ 动态新闻推送 第14期

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

    王很水
  • C++ 动态新闻推送 第13期

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

    王很水
  • C++ 动态新闻推送 第11期

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

    王很水
  • C++ 动态新闻推送 第10期

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

    王很水

扫码关注云+社区

领取腾讯云代金券