This is a spin off of the question How to check if object is const or not?.
I was surprised to see the following program
#include
#i
Perhaps it'll be easier to understand with this example
std::cout << std::is_const::value << "\n"; // pointer to const int
std::cout << std::is_const::value << "\n"; // const pointer to int
Output:
false
true
The first type is a pointer to a const int, while in the second the int * itself is const. Hence it results in true while the former is false. Similarly, what you have a reference to a const int. If int& const were valid it'd result in true.