1generic
2
3  type T is (<>);
4  with function MAX_ADD(X : T; I : INTEGER) return T;
5
6package Discr16_G is
7
8  LO : T := T'val(T'pos(T'first));
9  HI : T := T'val(T'pos(MAX_ADD(LO, 15)));
10
11  type A2 is array(T range <>) of T;
12
13  type R2(D : T) is
14  record
15    C : A2(LO..D);
16  end record;
17
18end;
19