Skip to content

败犬日报 2025-05-11

1. cppreference.cn 不是正版网站,正版是 com

不要用。

2. std::decaystd::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]>);