Я пытался создать два класса, первый с неконстантной реализацией функций, второй с константной реализацией. Вот небольшой пример:
class Base {
protected:
int some;
};
class A : public virtual Base {
const int& get() const {
return some;
}
};
class B : public virtual Base {
int& get() {
return some;
}
};
class C : public A, B {};
C test;
test.get(); // ambiguous
Вызов функции get
неоднозначен. Неважно, что версия const должна соответствовать большему количеству требований. (Вызов get
для const C
также неоднозначен, но есть одна возможная функция для вызова.)
Есть ли причина для такого поведения в стандарте? Спасибо!