std::d ecay 并删除 const 限定符

std::decay and removing const qualifiers

本文关键字:const ecay std 删除      更新时间:2023-10-16

我试图更好地理解std::d ecay的工作原理。根据 cpp首选项,它应该从类型中删除常量和易失性分类,作为它所做的其他转换的一部分。但是,下面的函数显示"假","真"与"真","真",正如人们所期望的那样。有人可以澄清为什么在这里与衰减类型匹配时需要常量吗?

int main()
{
const char *p = "testing";
cout << "------------------" << endl;
cout << boolalpha << is_same<char *, decay_t<decltype(p)>>::value << endl;
cout << boolalpha << is_same<const char *, decay_t<decltype(p)>>::value << endl;
cout << "------------------" << endl;
}

std::decay_t会从指针中删除const,如果它被const,而不是它指向的类型。

也就是说,char* const会衰变成char*.