败犬日报 2025-05-11
败犬日报 2025-05-11
1. cppreference.cn 不是正版网站,正版是 cppreference.com
不要用。这个网站的所有者还注册了包括 archlinux.org.cn、gnu.ac.cn、ansible.org.cn、hugging-face.cn 在内的一系列仿冒网站。archlinux 对 archlinux.org.cn 甚至发了声明。
而且里面内容很旧,翻译有问题。
2. std::decay 和 std::remove_cvref 有什么区别
只是移除 cvref 限定的话,没区别。(解释一下,cvref 指的是 const volatile 左值右值引用这几个的组合)
std::decay 是模拟 auto x = (?); 的推导结果,移除了 cvref 限定只是顺手的事,还会导致数组退化成指针、函数退化成指针。
std::remove_cvref 就是单纯的移除 cvref 限定。
所以易得它们的区别:
cpp
static_assert(std::is_same_v<std::decay_t<int (&)[8]>, int*>);
static_assert(std::is_same_v<std::remove_cvref_t<int (&)[8]>, int[8]>);