std :: decay和删除const限定词

问题描述 投票:1回答:1

我想更好地了解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;
}
c++ c++11 templates types typetraits
1个回答
0
投票

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

即,char* const将衰减为char*

© www.soinside.com 2019 - 2024. All rights reserved.