Недопустимое преобразование из «const T*» в «T*» с использованием псевдонимов типовC++

Программы на C++. Форум разработчиков
Anonymous
Недопустимое преобразование из «const T*» в «T*» с использованием псевдонимов типов

Сообщение Anonymous »

Я использую псевдонимы типов для указателя и const указателя и не понимаю, почему существует разница между возвратом константного указателя и const_pointer.
Я предполагал, что указатель const в данном случае эквивалентен const int*, но получаю недопустимую ошибку компиляции преобразования:

ошибка: недопустимое преобразование из 'const int*' в 'S::pointer {aka int*

struct S
{
using pointer = int*;
using const_pointer = const int*;

// const_pointer get() const { return &i; } // OK
const pointer get() const { return &i; } // ERROR

int i = {};
};

int main()
{
const S s;
s.get();
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... pe-aliases

Вернуться в «C++»