const PointerToNonConst& value
Почему понимается как A* const
для кода ниже:Почему const Ссылка на не-const указатель интерпретируется как указатель const?
using PointerToNonConst = A*; // or typedef A* PointerToNonConst;
const PointerToNonConst& value; // compiled and understood as `A* const`
Я ожидал, что он будет доступен только для чтения указатель вместо этого на постоянной указателю.
КСТАТИ здесь является использование регистра, поэтому вы можете встретить это в вашем коде:
class A
{
public:
void callOnNonConstMethodIsValid()
{
// change the object here
}
}
std::vector<A*> vect;
for (const auto& elem : vect)
{
elem->callOnNonConstMethodIsValid(); // no error
}
Несомненно, это 'A * const &' ... – ildjarn