--- ai05s/ai05-0200-1.txt 2010/10/26 05:39:47 1.3 +++ ai05s/ai05-0200-1.txt 2011/03/17 06:32:31 1.4 @@ -1,4 +1,4 @@ -!standard 12.7(4.1/2) 10-10-21 AI05-0200-1/01 +!standard 12.7(4.1/2) 11-03-15 AI05-0200-1/02 !class binding interpretation 10-02-12 !status work item 10-02-12 !status received 09-09-24 @@ -9,7 +9,8 @@ !summary -Legality rules for formal packages with box associations are clarified. +Legality rules for formal packages with box associations are provided. +They are similar to legality rules for regular instantiations. !question @@ -69,11 +70,23 @@ legal set of actuals for an instantiation of the template. If a formal_package_association for a formal type T of the template is given by -<>, then the set of generic_actual_parameters, after replacing the <> with a new -type derived from T, shall be a legal set of actuals for an instantiation of -the template. +<>, then the formal_package_association for any other generic_formal_parameter +of the template whose declaration mentions T directly or indirectly must be +given by a box as well. + +AARM note: + +The above rule is simple to state, though it does not reflect the fact that the +formal package functions like an instantiation of a special kind, where each +box association for a generic_formal_parameter F is replaced with a new entity +F' that has the same characteristics as F: if F is a formal discrete type then +F' is a discrete type, if F is a formal subprogram then F' is a subprogram +with a similar signature, etc. In practice this is achieved by making the +association into a copy of the declaration of the generic formal. +end AARM note. + !discussion We want the generic in the question to be illegal. It serves no purpose to @@ -200,5 +213,39 @@ directly. Therefore, speaking about a legal set of actuals for a conceptual instantiation seems like the simplest way to describe what is going on. I'm sure this is just the zeroth approximation to the final wording! + +**************************************************************** + +From: Edmond Schonberg +Sent: Tuesday, March 15, 2011 1:35 PM + +Here is an update of the proposed rules. [This is version /02 - Editor.] +The relevant paragraph is as follows: + +If all of the formal_package_associations are given by generic associations, the +set of generic_actual_parameters of the formal_package_associations shall be a +legal set of actuals for an instantiation of the template. + +If a formal_package_association for a formal type T of the template is given by +<>, then the formal_package_association for any other generic_formal_parameter +of the template whose declaration mentions T directly or indirectly must be +given by a box as well. + +AARM note: + +The above rule is simple to state, though it does not reflect the fact that the +formal package functions like an instantiation of a special kind, where each box +association for a generic_formal_parameter F is replaced with a new entity F' +that has the same characteristics as F: if F is a formal discrete type then F' +is a discrete type, if F is a formal subprogram then F' is a subprogram with a +similar signature, etc. In practice this is achieved by making the association +into a copy of the declaration of the generic formal. + +end AARM note. + + +The second paragraph is given as an easy-to-follow rule for the programmer (an +operational rule so to speak) while the AARM note provides an axiomatic rule +about the legality of some equivalent instantiation. ****************************************************************

Questions? Ask the ACAA Technical Agent