CVS difference for ai05s/ai05-0022-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file 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