Skip to content
败犬日报 2025-12-10

败犬日报 2025-12-10

1. if_eligible 已经被消灭

被 nb comment 干掉的,见 N5028。wording 更改在 P3920。

2. The (successful) end of the kernel Rust experiment(文章)

https://lwn.net/Articles/1049831/

本来没有 successful,纯标题党。移除了实验性标签,rust 正式成为 linux 内核语言。

3. “防御性编程”鉴赏:shared_ptr 类型的成员变量,在成员函数里复制一份保证存活

cpp
struct A {
    std::shared_ptr<B> obj_;

    void foo() {
        std::shared_ptr<B> obj = obj_;
        // 其他逻辑(没有析构、delete this 之类的操作)
    }
};

先说结论:完全没有必要。

几个 AI 一致认为有必要,说在多线程场景,this 会在别的线程析构,美名其曰“防御性编程”(被指出问题后,甚至反驳说群友没接触过工程)。

成员函数能保证 this 一直有效(除非主动析构或 delete this)。this 有效,它的成员变量自然一直有效。

如果真的有别的线程析构了 this,那这代码就是有 UB,是很危险的。这种“防御性编程”只会掩盖问题,而不是解决问题。


群友表示入职后最大的一个提升就是生产上永远不写“防御性代码”。要么有问题要么没问题,什么叫可能有问题。

如果防御性编程指断言、检查,那应该推荐(最多显得有点无聊)。而如果“防御性编程”指拿一个默认行为去掩盖问题,那就是掩耳盗铃。

“你先别管有没有问题,你就说代码能不能跑吧。”

4. 群友模板漏掉 _t(比如 std::decay_t),对着报错瞪眼瞪了半个小时