> -- Vlad писал(а):
> ...Ну и какая разница где эти 4(8) байтов будут отжирать память - в аггрегированной структуре или в аггрегирующей (или в довеске, который ходит рядом с ними)?...Покажите мне документ, в котором написано, что "компилятор должен..."? В описании языка этого нет. Я понимаю зачем в реализации оберона разумно сделать именно так, но все же это особенности реализации. И я не пытался сдеалать оберон из C++.
Разница есть:
- описание типа лежит в единственном экземпляре для обоих типов структур (на все экземпляры этих типов);
- тег типа аггрегированной структуры присутствуеттольковнутри описания типа аггрегирующей;
- при использовании аггрегирующей структуры ходит только её тег типа - экономия 4(8) байтов при единичном вложении.

> -- Language report писал(а):
> Appendix D: Mandatory Requirements for EnvironmentThe Component Pascal definition implicitly relies on three fundamental assumptions.1) There exists some run-time type information that allows to check the dynamic type of an object. This is necessary to implement type tests and type guards.2) ...3) ...An implementation that doesn't fulfill these compiler and environment requirements is not compliant with Component Pascal.Компилятор должен удовлетворять требованию 1. Как он это будет делать, действительно, особенности.