Я снова задаю вопрос, потому что только другой вопрос , который, как это, приближается к 10 годам, и содержит неверную информацию о выражениях, включающих подобъекты базового класса:
[defns.dynamic.type] определяет динамический тип glvalue как:
тип самого производного объекта, к которому относится glvalue
glvalueотносится только к не более чем одному объекту, и, поскольку «самый производный объект», как определено [intro.object] p6 , по существу является:
завершенный объект, член данных,или элемент массива типа класса, или объект не-классового типа называется наиболее производным объектом.
Если glvalue не ссылается на наиболее производный объект, то динамическийтип быть неопределенным?
Кроме того, я знаю, что предполагаемый эффект динамического типа выражения: для выражения glvalue E
, которое относится к объекту типа B
, который является подобъектом базового класса объекта типаD
, где B
- это базовый класс D
, чтобы получить тип D
из E
, однако я не вижу, как текущая формулировка выполняет или даже нуждается в этом, поскольку ссылки /указатели типа базового класса, связанные с типом производного класса, всегда будут ссылаться на подобъект базового класса.Насколько я могу судить, случай, когда тип выражения и тип объекта, на который оно ссылается, никогда не возникнет.