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

Differences between 1.3 and version 1.4
Log of other versions for file ai05s/ai05-0066-1.txt

--- ai05s/ai05-0066-1.txt	2008/02/23 05:05:41	1.3
+++ ai05s/ai05-0066-1.txt	2008/03/07 06:15:19	1.4
@@ -1,7 +1,8 @@
-!standard 3.10.2(14.4/2)                                      08-02-09    AI05-0066-1/03
+!standard 3.10.2(14.4/2)                                      08-02-22    AI05-0066-1/04
 !standard 7.6.1(13/2)
 !standard 7.6.1(13.1/2)
 !class binding interpretation 07-10-22
+!status ARG Approved  8-0-1  08-02-10
 !status work item 07-10-22
 !status received 07-09-13
 !priority High
@@ -68,10 +69,12 @@
 
 !recommendation
 
-(See Summary.)
+(See summary.)
 
 !wording
 
+Modify 3.10.2(14.4/2) as follows (this includes the wording change of AI05-0024-1):
+
     In the first case, the allocated object is said to be a coextension
     of the object whose discriminant designates it, as well as of any
     object of which the discriminated object is itself a coextension or
@@ -80,7 +83,7 @@
     call that is used (in its entirety) to directly initialize a part of
     an object, after the result is assigned, the coextension becomes a
     coextension of the object being initialized and is no longer
-    considered a coextension of the anonymous object.}  All coextensions
+    considered a coextension of the anonymous object.} All coextensions
     of an object {(which have not thus been transfered by such an
     initialization)} are finalized when the object is finalized (see
     7.6.1).
@@ -92,7 +95,8 @@
     coextensions of the result of evaluating the aggregate or function
     call are transfered to become coextensions of the object being
     initialized and are not finalized until the object being initialized
-    is ultimately finalized.
+    is ultimately finalized, even if an anonymous object is created
+    as part of the operation.
 
 Modify 7.6.1(13) as follows:    
     
@@ -102,12 +106,12 @@
     an aggregate or function call. The master of such an anonymous
     object is the innermost master enclosing the evaluation of the
     aggregate or function call, which may be the aggregate or function
-    call itself.}   
+    call itself}.
     
  AARM NOTE: 
     In 3.10.2 we assign an accessibility level to the result of an
     aggregate or function call that is used to directly initialize a
-    part of an object based on the object being initialized.  This is
+    part of an object based on the object being initialized. This is
     important to ensure that any access discriminants denote objects
     that live at least as long as the object being initialized. 
     However, if the result of the aggregate or function call is not
@@ -214,8 +218,54 @@
 
 (The part in square brackets is repeated from 7.6(11/2), and thus follows; we would need
 to explicitly say something else if we don't want that.)
+
+!corrigendum 3.10.2(14.4/2)
+
+@drepl
+In the first case, the allocated object
+is said to be a @i<coextension> of the object whose discriminant designates it,
+as well as of any object of which the discriminated object is itself a
+coextension or subcomponent. All coextensions of an object are finalized when
+the object is finalized (see 7.6.1).
+@dby
+In the first case, the allocated object
+is said to be a @i<coextension> of the object whose discriminant designates it,
+as well as of any object of which the discriminated object is itself a
+coextension or subcomponent. If the allocated object is a coextension of an
+anonymous object representing the result of an aggregate or function
+call that is used (in its entirety) to directly initialize a part of
+an object, after the result is assigned, the coextension becomes a
+coextension of the object being initialized and is no longer
+considered a coextension of the anonymous object. All coextensions
+of an object (which have not thus been transfered by such an
+initialization) are finalized when the object is finalized (see 7.6.1).
+
+!corrigendum 7.6.1(13/2)
+
+@drepl
+The master of an object is the master enclosing its creation whose
+accessibility level (see 3.10.2) is equal to that of the object.
+@dby
+The master of an object is the master enclosing its creation whose
+accessibility level (see 3.10.2) is equal to that of the object,
+except in the case of an anonymous object representing the result of
+an aggregate or function call. The master of such an anonymous
+object is the innermost master enclosing the evaluation of the
+aggregate or function call, which may be the aggregate or function
+call itself.
+
+!corrigendum 7.6.1(13.1/2)
+
+@drepl
+In the case of an @fa<expression> that is a master, finalization of any
+(anonymous) objects occurs as the final part of evaluation of the
+@fa<expression>.
+@dby
+In the case of an @fa<expression> that is a master, finalization of any
+(anonymous) objects occurs after completing
+evaluation of the @fa<expression> and use of the objects, prior to starting
+the execution of any subsequent construct.
 
---!corrigendum 7.6.1(13)
 
 !ACATS Test
 

Questions? Ask the ACAA Technical Agent