Вы можете иметь несколько переменных, относящихся к одному и тому же объекту, некоторые изменяемые и некоторые const.Например:
A a1;
const A &a2 = a1;
A * const pa = &a1;
f(a1);
....
void f(const A &a);
это должно быть разрешено в вашем случае?Преобразование из изменяемого в const является неявным, обратное - нет.Возможно, если вы приведете пример, это поможет.
EDIT: (в ответ на измененный код) с объектом const вы можете вызвать только функцию-член const.почему бы не иметь:
int& AccessValue()
{
return v;
}
и компилятор с жалобой, если вы вызываете AccessValue для неконстантного объекта.