| with Ada.Containers.Vectors; |
| with Ada.Containers; |
| with Ada.Finalization; |
| |
| package Tagged1 is |
| |
| generic |
| type Target_Type (<>) is limited private; |
| package A is |
| type Smart_Pointer_Type is private; |
| private |
| type Smart_Pointer_Type |
| is new Ada.Finalization.Controlled with null record; |
| end; |
| |
| generic |
| type Target_Type (<>) is limited private; |
| package SP is |
| type Smart_Pointer_Type is private; |
| private |
| package S is new A (Integer); |
| type Smart_Pointer_Type is new S.Smart_Pointer_Type; |
| end; |
| |
| type Root_Type is tagged record |
| Orders : Integer; |
| end record; |
| package Smarts is new SP |
| (Target_Type => Root_Type'Class); |
| |
| type Fat_Reference_Type is new Smarts.Smart_Pointer_Type; |
| type EST is record |
| Orders : Fat_Reference_Type; |
| end record; |
| |
| package V is new Ada.Containers.Vectors (Positive, EST); |
| |
| procedure Dummy; |
| end; |