std::d ecay 并删除 const 限定符
std::decay and removing const qualifiers
我试图更好地理解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*
.