Вы назначаете адрес e, используя auto
, поэтому e является указателем. Константа const применяется к int, e указывает на const int, но e не является указателем const. e был бы константой верхнего уровня, если бы e был константным указателем, а это не константный указатель (ie вы можете назначить другие адреса для e), который указывает на const int. Следовательно, e является константой низкого уровня
int i = /*some integer literal*/;
const auto e = &i;
Теперь e
- это константный указатель на не const int. Поскольку сам объект e
является константой, это константа верхнего уровня