| -- { dg-do compile } |
| with Ada.Tags.Generic_Dispatching_Constructor; use Ada.Tags; |
| package body abstract1 is |
| |
| function New_T (Stream : not null access Root_Stream_Type'Class) |
| return T'Class is |
| function Construct is |
| new Generic_Dispatching_Constructor (T, Root_Stream_Type'Class, Input); |
| E : constant String := String'Input (Stream); |
| I : constant Tag := Internal_Tag (E); |
| |
| begin |
| return Construct (I, Stream); |
| end New_T; |
| |
| function Input (Stream : not null access Root_Stream_Type'Class) |
| return IT is |
| begin |
| return O : IT do |
| Integer'Read (Stream, O.I); |
| end return; |
| end Input; |
| |
| function Input (Stream : not null access Root_Stream_Type'Class) |
| return FT is |
| begin |
| return O : FT do |
| Float'Read (Stream, O.F); |
| end return; |
| end Input; |
| end abstract1; |