败犬日报 2025-11-27
败犬日报 2025-11-27
1. 使用 spdlog 有全局变量析构顺序问题
你有一个全局变量,这个变量的析构函数里打了一行 spdlog::info(),这样就有可能 spdlog 全局变量先于你的变量释放(C++ 不保证全局变量析构顺序),于是就 core 了。
2. 局部变量同时用 static local_thread,static 是多余的
往期的代码里用了 static local_thread 局部变量,现已修改,在这里强调一下。
3. std::ranges::filter_view::begin() 会缓存结果
往期提到这个问题 的第一个代码。
这是因为 begin() 要求是均摊常数复杂度,如果只有最后一个元素满足要求,每次 begin() 都是 O(n) 不满足要求。
可以转 input_range 来解决,在 C++26 可以通过 views::to_input(有可能改名为 as_input)做到。
4. views::iota 迭代器的 difference_type 问题
往期提到这个问题 的第二个代码。
也可以通过 C++26 的 views::indices 解决。