Когда вы объявляете переменную как
const T* ptr = /*...*/
Вы объявляете указатель, говоря, что объект, на который указывает объект, а не указатель, не должен изменяться. Другими словами, это «указатель на T, который является постоянным».
Если вы хотите сделать невозможным переназначение указателя, вы можете написать
T* const ptr = /*...*/
Теперь это неизменный указатель на T, который можно изменить.
Вы можете объединить их вместе так:
const T* const ptr = /*...*/
Чтобы получить неизменный указатель на неизменный T.
В качестве забавного совета вы обычно можете определить, какие части пары указатель / указатель можно изменить, читая тип справа налево. Попробуйте это выше и посмотрите, что вы получите.