I'm trying to understand the workings of std::decay a little better. Per cppreference it's supposed to remove const and volatile classification from the type as part of other transformations it does. However, below function displays "False", "True" vs. "True", "True" as one might expect. Can someone please clarify why the const is needed when matching against the decayed type here?
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;
}