Я использую псевдонимы типов для указателя и 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