Wie immer hilft die Rückkehr zu den Wurzeln (LRM_83 3.5.4 (4..6)). Die Deklaration

ist äquivalent zu

Der vordefinierte Ganzzahltyp wird implizit vom Compiler ausgewählt und zwar so, dass die Grenzen von Integer_7 in ihm enthalten sind, also hier vielleicht ein 16 Bit langer Typ. Alle Berechnungen werden in diesem Typ durchgeführt, nur die Ergebnisse müssen im Bereich Integer_7 liegen.

Der implizit deklarierte Gleichheitsoperator hat also folgende Spezifikation:

und 64 gehört ganz ohne Zweifel zum Wertebereich von Anonym. Die Spezifikation

dagegen würde natürlich Constraint_Error auslösen, und in diesem Fall dürfte der Compiler die Anweisung auch nicht wegoptimieren.


Ada Magica
Inhaltsverzeichnis