Недопустимое преобразование из «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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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