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

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

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

每周日推送从reddit/hackernews/lobsters/meetingcpp摘抄一些c++动态。

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

discord讨论群组

知乎专栏

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


资讯

关于c++标准会的最新进展 c++23

herb介绍了几个他感兴趣的小补丁

  • lambda可以省略括号(),但是如果有mutable又不可以省略括号了,需要修订
  • range使用:std::views::join迭代器返回有问题,引入新组件修复
  • 加强std::visit处理继承std::variant 的场景
  • 引入std::to_underlying代替 std::underlying_type_t<T>

涉及到语法细节我也不懂,可以看trip report中引用的论文看详细细节

感觉能用在反射上

之前c++ weekly也讨论了std::source_location 链接 很有用处

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

github也有更新,见https://github.com/hellogcc/osdt-weekly

文章

实现并行的copy_if

c++17已经实现了一些并行算法,实现比较粗暴

std::sort(std::execution::par, ...);
std::for_each(std::execution::par, ...);

std::execution::parallel_policy不要求顺序,这样可能有线性的性能提升,但是对于sort,可能需要同步

对于copy_if来说,返回新的对象,这个返回结果,多线程写入,必然需要同步。作者给出了几种实现方案

1 简单加锁 2 利用算法规避锁,3 分块 其中某些场景下多线程并没有起到加速的作用。

第二种方法 用到了std::exclusive_scan 可以了解下,类似haskell map+scanl

clang的一个编译告警-Wsuggest-override

这里讲了一个场景

struct B {
    virtual int f() = 0;
    virtual int g() = 0;
};

struct C : B {
    int f() override;

    virtual int g() final;  // overrides
    virtual int h() final;  // doesn't
};

一个函数同时被virtual和final修饰,可能看不清本身的含义,通过这个编译能让不清楚的接口语义提前暴露出来

并推荐基类 virtual,继承用override/final 尽可能别混用,当然也存在这个基类是另外一个基类的子类的场景,导致同时有virtual和final,尽量避免

一个协程的教程

concept

简单来说,就是这段代码

template <typename T>
concept Number = std::integral<T> || std::floating_point<T>;

template <typename T>
requires Number<T>
class WrappedNumber {
public:
  WrappedNumber(T num) : m_num(num) {}
private:
  T  m_num;
};

template <typename T>
requires Number<T>
auto add(T a, T b) {
  return a+b;
}

注意这里concept和requirs的用法

Guru of the Week #100 Preconditions, Part 1

这里在介绍断言的两种语义,在前面校验还是在后面校验,类似gsl::Expect gsl::Ensure的区别,写的非常长

  • A precondition is a predicate that should hold upon entry into a function. It expresses a function’s expectation on its arguments and/or the state of objects that may be used by the function.
  • A postcondition is a predicate that should hold upon exit from a function. It expresses the conditions that a function should ensure for the return value and/or the state of objects that may be used by the function.

hurb是constract 提案的作者,所以对这些概念解释的比较细致。文章我没有仔细看。

同步的outputstream

std::cout多线程写是会乱序的,c++20引入了std::osyncstream,这样所有的都会同步

ps: stream这套东西应该没人用吧

cpp tips of week #214 Did you know about variadic aggregate initialization?

介绍variadic aggregate initialization的 数组初始化可以变参模版初始化,这个例子太魔鬼了,可以看这个博客 理解一下

视频

cpp weekly

老生常谈,讲的 C++’s Most Vexing Parse

Meeting C++ YT - Jonathan Müller - The Static Initialization Order Fiasco

借着实现一个logger库的例子,讨论各种初始化的顺序。

Timur Doumler - How C++20 changes the way we write code - Meeting C++ 2020

介绍c++20的四个概念coroutine/concept/module/range,以及如何改善c++代码

cppcast 每周更新

开源项目

一个用c++实现的lisp wiki丰富

mold 一个现代的linker 解决的问题是当前编译环境的瓶颈容易在链接上,没有充分利用并行化优势

mold的目标是要比cat还快,首先并发做文件拷贝,比单线程cat快,其次文件拷贝瓶颈在IO,可以用空闲的cpu做其他事情

llvm 的lld其实在这方面已经做了优化,但作者认为还是慢

还有很多设计可以在readme中看到

讨论

工具

toolchain 介绍周边工具

hacking cpp 有很多c++的资料,比如https://hackingcpp.com/cpp/std/containers.html


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

本文永久链接

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++ 动态新闻推送 第16期

    从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++动态。

    王很水

扫码关注云+社区

领取腾讯云代金券