我想更好地了解std :: decay的工作原理。根据cppreference,它应该从类型中删除const和volatile分类,作为它进行其他转换的一部分。但是,下面的功能可能会显示“ False”,“ True”和“ True”,“ True”。有人可以在这里与衰减类型进行匹配时说明为什么需要const吗?
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*
。