CVS difference for ais/ai-00193.txt

Differences between 1.1 and version 1.2
Log of other versions for file ais/ai-00193.txt

--- ais/ai-00193.txt	1998/09/30 00:17:35	1.1
+++ ais/ai-00193.txt	1998/10/01 03:20:22	1.2
@@ -1,4 +1,4 @@
-!standard 07.06.01 (04)                               98-04-09  AI95-00193/01
+!standard 07.06.01 (04)                               98-04-09  AI95-00193/02
 !class binding interpretation 97-08-19
 !status work item 98-04-02
 !status received 97-08-19
@@ -627,3 +627,140 @@
                 Randy.
 
 ****************************************************************
+From: 	Robert A Duff[SMTP:bobduff@world.std.com]
+Sent: 	Thursday, April 09, 1998 7:20 PM
+Subject: 	Re: AI-00193/1
+
+> !standard 07.06.01 (04)                               98-04-09  AI95-00193/01
+...
+> still be finalized when the scope is existed.  
+                              ^^^^^^^^^^^^^^^^
+You misspelt "master is left".  ;-)
+
+> Hence, in the default initialization case, if the Adjust operation of
+> the first controlled component fails, the initialization of the second
+> controlled component can be skipped completely, and only the
+                       ^^^^^^
+"can be" should be "is", assuming you mean "first" wrt the order of
+initialization chosen by the impl.  Or did you mean wrt textual order of
+component decls?
+
+- Bob
+
+****************************************************************
+
+From: 	Tucker Taft[SMTP:stt@inmet.com]
+Sent: 	Friday, April 10, 1998 10:38 AM
+To: 	arg95@sw-eng.falls-church.va.us
+Subject: 	Re: AI-00193/1
+
+A few new thoughts on the issue of "adjust operations due to be performed":
+
+> ...
+> As a point of clarification, adjustments "due to be performed"
+> are all those associated with a single assignment operation.
+> If a composite object is default initialized, and it has
+> two controlled components each of which has its own
+> explicit initialization expression, the adjustment of the
+> second controlled component is not "due to be performed" just because
+> the first controlled component's adjust operation has been
+> invoked.  By contrast, if such a composite object is initialized
+> as a whole by assignment, then the adjust operations of all of its 
+> controlled parts are "due to be performed" as soon as the bytes 
+> representing the source (right-hand-side) of the assignment operation 
+> are copied on to the composite object being initialized.
+> ...
+
+I'm not sure I buy this rule any more.  There seems no harm in 
+stopping after the first failing Adjust operation in the case of
+an assignment operation used as part of initialization, so long
+as only parts for which Adjust has been invoked are in fact finalized.
+
+In an assignment statement, the whole object is eventually going
+to be finalized, so clearly you want to go ahead and do all the
+Adjusts for parts that have been copied onto, even if one of them fails.
+For initialization, it seems permissible to conceptuallly do component by 
+component assignment/adjustment, even if the implementation starts
+by doing a block copy into the uninitialized storage, so long
+as parts that have not been adjusted are not finalized.
+
+So all in all, my attempt to "clarify" what is meant by 
+"adjustments due to be performed" should probably be ignored.
+There is perhaps something we could say to clarify the
+intent of "due to be performed," but I am too lazy to figure
+it out right now.  Maybe "do the right thing" ;-).
+
+-Tuck
+
+****************************************************************
+
+From: 	Gary Dismukes[SMTP:dismukes@gnat.com]
+Sent: 	Friday, April 10, 1998 1:51 PM
+Subject: 	Re: AI-00193/1
+
+> I'm not sure I buy this rule any more.  There seems no harm in 
+> stopping after the first failing Adjust operation in the case of
+> an assignment operation used as part of initialization, so long
+> as only parts for which Adjust has been invoked are in fact finalized.
+
+I agree, we shouldn't require all components to be adjusted on
+init-by-assignment.  That seems like overspecification and could
+have an undesirable impact on some existing implementations.
+
+****************************************************************
+
+From: 	Randy Brukardt[SMTP:Randy@rrsoftware.com]
+Sent: 	Friday, April 10, 1998 3:37 PM
+Subject: 	RE: AI-00193/1
+
+Tucker: Thanks for noticing that the AI goes too far.  That saves me having 
+to figure it out how to explain it.
+
+I think it is important that we not force existing implementations to 
+change here (unless they want to, or if they are actually wrong.)  This is 
+a failure case, and the important issue is to write the rules so that the 
+failure of one abstraction doesn't kill an unrelated one.  We don't want or 
+need to over-specify the behavior beyond that needed to insure that.
+
+As noted previously in my mail on the subject (attached to the AI), it is 
+reasonably possible to implement the correct semantics (taking into account 
+AI-147 permissions) without much additional code.  While an extra 
+permission which allows even less code to be used is attractive, it 
+certainly should not be made into a requirement --the improvement in code 
+size may not be significant for many applications.
+
+****************************************************************
+
+From: 	Tucker Taft[SMTP:stt@inmet.com]
+Sent: 	Friday, April 10, 1998 3:12 PM
+Subject: 	Re: AI-00193/1
+
+Gary Dismukes writes:
+
+> I agree, we shouldn't require all components to be adjusted on
+> init-by-assignment.  That seems like overspecification and could
+> have an undesirable impact on some existing implementations.
+
+Yes.  I think the key requirements are:
+
+   1) A part of an object must be finalized if and only if it has 
+      been either successfully default initialized, or, as part of 
+      initialization-by-assignment, been adjusted (successfully or not).
+
+   2) During an assignment statement, once a part of the LHS object
+      is overwritten with a copy of the corresponding part of the 
+      right-hand-side, that part must be adjusted.
+
+Presuming these requirements are satisfied, I don't see any
+need for the notion of "adjustments due to be performed" during
+initialization by assignment.  
+
+During an assignment *statement*, the "adjustments due to be performed" 
+are defined by requirement (2), namely once some part of the LHS object 
+has been overwritten, adjustment is "due to be performed" on that part 
+of the LHS object.
+
+-Tuck
+
+****************************************************************
+

Questions? Ask the ACAA Technical Agent