!standard A.5.1(1) 02-06-13 AC95-00040/01 !standard A.5.1(9) !standard A.5.1(48) !standard A.10.8(20-23) !class binding interpretation 02-06-12 !status received no action 02-06-12 !qualifier Omission !subject Portability issue with non-generic equivalent library packages !summary !appendix !topic portability issue with non-generic equivalent library packages !reference RM95-A.5.1/{1,9,48} !reference RM95-A.10.8/20-23 !from Dan Eilers 02-06-12 !discussion Ada provides nongeneric equivalent packages for several predefined library units, such as numerics.generic_elementary_functions, and text_io.integer_io. For example, RM95 A.10.8/21 shows: > with Ada.Text_IO; > package Ada.Integer_Text_IO is new Ada.Text_IO.Integer_IO(Integer); AARM A.5.1/9a explains the purpose as follows: > Reason: The nongeneric equivalents are provided to allow the > programmer to construct simple mathematical applications without being > required to understand and use generics. However, there is a portability issue due to the implementation permission provided in A.5.1/48 and A.10.8/23: > The nongeneric equivalent packages may, but need not, be actual > instantiations of the generic package for the appropriate predefined > type. I presume that the legality of the following code depends on whether or not an implementation takes advantage of this permission: with Ada.Numerics.Generic_Elementary_Functions; generic with package Elementary_Functions is new Ada.Numerics.Generic_Elementary_Functions (<>); package pak1 is end pak1; with pak1; with Ada.Numerics.Elementary_Functions; package pak2 is new pak1 (Elementary_Functions => Ada.Numerics.Elementary_Functions); As far as I can tell, Appendix M does not require documentation of this portability issue, which leads me to suspect that it may have been overlooked in granting the implementation permission. **************************************************************** From: Robert A. Duff Sent: Wednesday, June 12, 2002 9:16 PM > As far as I can tell, Appendix M does not require documentation > of this portability issue, which leads me to suspect that it may > have been overlooked in granting the implementation permission. The fact that permission is given indicates that the designers knew that a "nongeneric equivalent" is not quite exactly equivalent to an instantiation. Otherwise, there would be no such permission, but just a NOTE or an AARM annotation pointing out the possibility. You point out one example -- generic formal packages. I wouldn't be surprised if there were others. **************************************************************** From: Robert Dewar Sent: Thursday, June 13, 2002 1:56 AM This implementation permission is important, of course I have no objection adding it to Annex M. ****************************************************************