1with Ada.Tags.Generic_Dispatching_Constructor;
2package generic_dispatch_p is
3   type Iface is interface;
4   function Constructor (I : not null access Integer) return Iface is abstract;
5   function Dispatching_Constructor
6      is new Ada.Tags.Generic_Dispatching_Constructor
7               (T           => Iface,
8                Parameters  => Integer,
9                Constructor => Constructor);
10   type DT is new Iface with null record;
11   overriding
12   function Constructor (I : not null access Integer) return DT;
13end;
14