败犬日报 2024-10-23
败犬日报 2024-10-23
1. 为什么 std::same_as 定义为 std::is_same_v T U && std::is_same_v U T,明明 is_same 有交换性
https://en.cppreference.com/w/cpp/concepts/same_as Possible implementation:
cpp
namespace detail
{
template< class T, class U >
concept SameHelper = std::is_same_v<T, U>;
}
template< class T, class U >
concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>;same_as 这样拆成 2 个子 concept 是为了让“约束的偏序”生效,就是判哪个约束更严格那个。
std::is_same_v<T, U> std::is_same_v<U, T> 是不同的约束。
2. 系统调用 brk, sbrk 线程安全吗
不是。
3. const map 用 operator[] 居然能编译过去,后来发现是编译选项 -fpermissive
这个选项不要开,非常不好的实践(GCC 默认不开)。另外 const map 要用成员函数 at 来访问。