Skip to content

败犬日报 2024-12-16

1. std::enable_shared_from_this 必须公开继承,否则调用会抛异常

std::enable_shared_from_this 不公开继承的话能过编译,但是调用就抛 bad_weak_ptr

这个坑是比较隐蔽的。

为什么不直接编译错误?答案是允许 D 私有继承 B,B 公开继承 std::enable_shared_from_this 这种情况。stackoverflow

检查可以用 clang tidy:https://github.com/llvm/llvm-project/pull/102299

2. C-Reduce

用于生成 C/C++ 等语言编译错误的最小化复现。

https://bernsteinbear.com/blog/creduce/

3. C++ module 可以用了吗

可以,推荐使用 clang,正常使用已经没问题。

主流支持 module 进度遥遥无期,可以在这看进度 https://arewemodulesyet.org/。但是 module 可以和头文件一起使用,从而规避问题。

对于编译速度有追求的用户可以使用 module,因为本来他们就已经使用 PCH(预编译头)来加速编译了,module 是 PCH 的超级加强版。PCH 只能线性依赖,module 可以是有向无环图。