CVS difference for ai05s/ai05-0022-1.txt
--- ai05s/ai05-0022-1.txt 2006/11/11 07:07:46 1.1
+++ ai05s/ai05-0022-1.txt 2007/05/25 23:13:55 1.2
@@ -1,4 +1,4 @@
-!standard A.18.2(239/2) 06-11-10 AI05-0022-1/01
+!standard A.18.2(239/2) 07-05-25 AI05-0022-1/02
!class binding interpretation 06-11-10
!status work item 06-11-10
!status received 06-10-13
@@ -30,9 +30,34 @@
!wording
-TBD.
+Add after A.18.2(239/2):
+ It is a bounded error for the actual function associated with
+ a generic formal subprogram, when called as part of an operation
+ of this package, to tamper with elements of any Vector parameter
+ to the operation. Either Program_Error is raised, or the operation
+ works as defined on the value of the Vector either prior to, or
+ subsequent to, some or all of the modifications to the Vector.
+
+Corresponding statements need to appear after A.18.3(152/2),
+A.18.4(75/2), and A.18.7(96/2).
+
!discussion
+
+Some operations in some implementations can handle ongoing changes
+to a container, and these should be allowed to do so. However
+most operations in most implementations will be significantly
+simplified if they can preclude any ongoing changes to the
+container during the operation. These will need to check
+for tampering. Since generic actual subprograms in these
+cases will often be intrinsic operators or small inlinable
+subprograms, the check need not be a significant overhead
+for "macro"-expanded generics, since the optimizer can probably
+determine whether the state of the tampering flag, whatever
+it is, changes as a result of the call. If the call on the formal
+subprogram is not being inlined, then the overhead is already
+sufficiently great that a tampering check is probably not going
+to add to it significantly.
--!corrigendum A.18.2(239/2)
Questions? Ask the ACAA Technical Agent