CVS difference for ai22s/ai22-0040-1.html
--- ai22s/ai22-0040-1.html 2022/06/18 04:17:03 1.3
+++ ai22s/ai22-0040-1.html 2022/09/10 09:05:14 1.4
@@ -1,13 +1,13 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0040-1/02</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0040-1/03</title>
<style type="text/css">
table td,table th{padding:0}
-.c21{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;background-c
olor:#f0f0f0;border-left-style:solid;border-bottom-width:0pt;width:468pt;border-top-color:#000000;border-bottom-style:solid}
-.c23{border-spacing:0;border-collapse:collapse;margin-right:auto}
-.c8{color:inherit;text-decoration:inherit}
-.c65{max-width:468pt;padding:72pt 72pt 72pt 72pt}
-.c58{border:1px solid black;margin:5px}
-.c40{height:0pt}
-.c22{background-color:#ffffff}
+.c40{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;background-c
olor:#f0f0f0;border-left-style:solid;border-bottom-width:0pt;width:468pt;border-top-color:#000000;border-bottom-style:solid}
+.c24{text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;color:#1155cc;text-decoration:underline}
+.c44{border-spacing:0;border-collapse:collapse;margin-right:auto}
+.c28{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
+.c17{color:inherit;text-decoration:inherit}
+.c21{border:1px solid black;margin:5px}
+.c36{height:0pt}
P.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:14pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:normal}
H2.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:12pt; color:#000000; font-size:14pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; tex
t-align:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
P.inst{margin-bottom:0; margin-top:0; margin-left:18pt; margin-right:0; padding-top:9pt; color:#000000; font-size:12pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif;line-height:1.15; orphans:2; widows:2; text-align:left; font-weigh
t:400; text-decoration:none; vertical-align:baseline; font-style:normal}
@@ -30,48 +30,49 @@
SPAN.ins{color:#005500}
SPAN.del{color:#880000}
SPAN.ntrm{font-family:"Arial","Liberation Sans",sans-serif}
-P.a6{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; page-break-after:avoid; padding-top:0pt; padding-bottom:3pt; line-height:1.15; orphans:2; widows:2; text-align
:left}
-SPAN.a19{color:#1155cc; text-decoration-skip-ink:none; -webkit-text-decoration-skip:none; text-decoration:underline}
-P.a34{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#500050;font-size:11pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; height:11pt; tex
t-decoration:none; vertical-align:baseline; font-style:normal; font-weight:400}
-P.a36{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:7.5pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:2pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; text-decoration
:none; vertical-align:baseline; font-style:normal; font-weight:400}
-P.a44{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0;color:#000000;font-size:11pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; text-decoration:no
ne; vertical-align:baseline; font-style:normal; font-weight:400}
-P.a46{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#1155cc;font-size:10pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; vertical-align:b
aseline; font-style:normal; font-weight:400; text-decoration:none}
-P.a48{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#1155cc;font-size:11pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; text-decoration:
none; vertical-align:baseline; font-style:normal; font-weight:400}
-SPAN.a54{background-color:#ffffff}
-P.a65{margin-bottom:0; margin-top:0; margin-left:20pt; margin-right:0;color:#006600;font-size:12pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:4pt; line-height:1.2954545454545454; orphans:2; widows:2; text-align:left; font
-weight:400}
-SPAN.a66{color:#000000}
-SPAN.a67{-webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline; text-decoration-skip-ink:none; font-style:italic}
-SPAN.a68{-webkit-text-decoration-skip:none;text-decoration:underline; text-decoration-skip-ink:none;vertical-align:baseline; font-style:normal}
+P.a5{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:3pt; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; text-align
:left}
+P.a33{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#500050;font-size:11pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; height:11pt; tex
t-decoration:none; vertical-align:baseline; font-style:normal; font-weight:400}
+P.a35{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:7.5pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:2pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:400
; text-decoration:none; vertical-align:baseline; font-style:normal}
+P.a43{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0;color:#000000;font-size:11pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:400; t
ext-decoration:none; vertical-align:baseline; font-style:normal}
+P.a45{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#1155cc;font-size:10pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:400;
vertical-align:baseline; font-style:normal; text-decoration:none}
+P.a47{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#1155cc;font-size:11pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:0pt; line-height:1.15; orphans:2; widows:2; text-align:left; text-decoration:
none; vertical-align:baseline; font-style:normal; font-weight:400}
+SPAN.a52{background-color:#ffffff}
+P.a63{margin-bottom:0; margin-top:0; margin-left:20pt; margin-right:0;color:#006600;font-size:12pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:4pt; line-height:1.2954545454545454; orphans:2; widows:2; text-align:left; font
-weight:400}
+SPAN.a64{color:#000000}
+SPAN.a65{text-decoration-skip-ink:none; -webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline;font-style:italic}
+SPAN.a66{-webkit-text-decoration-skip:none;text-decoration:underline; text-decoration-skip-ink:none;vertical-align:baseline; font-style:normal}
P.a69{margin-bottom:0; margin-top:0; margin-left:42pt; margin-right:22pt;color:#006600;font-size:12pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:6pt; line-height:1.2954545454545454; orphans:2; widows:2; text-align:left}
SPAN.a70{font-weight:400; color:#000000}
-SPAN.a71{-webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline; text-decoration-skip-ink:none; font-style:italic;font-weight:400}
-SPAN.a72{-webkit-text-decoration-skip:none;font-weight:400; text-decoration:underline; text-decoration-skip-ink:none}
-SPAN.a73{text-decoration-skip-ink:none; font-size:10.5pt; -webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline; font-family:"Arial","Liberation Sans",sans-serif}
-SPAN.a74{-webkit-text-decoration-skip:none;font-weight:400; text-decoration:underline; text-decoration-skip-ink:none;vertical-align:baseline; font-style:normal}
+SPAN.a71{text-decoration-skip-ink:none; -webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline;font-weight:400; font-style:italic}
+SPAN.a72{-webkit-text-decoration-skip:none;text-decoration:underline; text-decoration-skip-ink:none;font-weight:400}
+SPAN.a73{text-decoration-skip-ink:none; -webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline; font-size:10.5pt; font-family:"Arial","Liberation Sans",sans-serif}
+SPAN.a74{-webkit-text-decoration-skip:none;text-decoration:underline; text-decoration-skip-ink:none;font-weight:400; vertical-align:baseline; font-style:normal}
P.a77{margin-bottom:0; margin-top:0; margin-left:42pt; margin-right:22pt;color:#000000;font-size:12pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:3pt; line-height:1.2954545454545454; orphans:2; widows:2; text-align:left; f
ont-weight:400}
-SPAN.a78{vertical-align:baseline; font-style:normal;text-decoration:none}
+SPAN.a78{text-decoration:none; vertical-align:baseline; font-style:normal}
P.a79{margin-bottom:0; margin-top:0; margin-left:64pt; margin-right:22pt;color:#000000;font-size:12pt;font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:6pt; line-height:1.2954545454545454; orphans:2; widows:2; text-align:left; f
ont-weight:400}
-SPAN.a80{-webkit-text-decoration-skip:none; color:#006600;text-decoration:underline; text-decoration-skip-ink:none}
+SPAN.a80{-webkit-text-decoration-skip:none; color:#006600; text-decoration:underline; text-decoration-skip-ink:none}
SPAN.a82{text-decoration:none; vertical-align:baseline;font-family:"Arial","Liberation Sans",sans-serif; font-style:normal}
-SPAN.a84{font-size:10pt;color:#0000ff}
+SPAN.a84{color:#0000ff;font-size:10pt}
SPAN.a85{background-color:#f0f0f0; font-family:"Courier New",monospace}
SPAN.a86{background-color:#f0f0f0; font-family:"Courier New",monospace; color:#880000}
SPAN.a87{font-family:"Courier New",monospace}
P.a88{margin-bottom:0; margin-top:0; margin-left:42pt; margin-right:22pt; color:#006600; font-size:12pt; font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:19pt; line-height:1.2954545454545454; orphans:2; widows:2; text-align:lef
t}
-P.a89{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; color:#500050; font-size:11pt; font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:13pt; line-height:1.15; orphans:2; widows:2; text-align:left; text-decorat
ion:none; vertical-align:baseline; font-style:normal; font-weight:400}
+P.a89{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; color:#500050; font-size:11pt; font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:13pt; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:normal}
P.a90{margin-bottom:0; margin-top:0; margin-left:120pt; margin-right:0; color:#500050; font-size:11pt; font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:13pt; line-height:1.15; orphans:2; widows:2; text-align:left; text-dec
oration:none; vertical-align:baseline; font-style:normal; font-weight:400}
P.a91{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0; color:#000000; font-size:11pt; font-family:"Times New Roman","Times",serif; padding-top:0pt; padding-bottom:13pt; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:40
0}
P.a92{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; color:#1155cc; font-size:10pt; font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:13pt; line-height:1.15; orphans:2; widows:2; text-align:left}
</style>
-</head><body class="c22 c65"><p class="a6">AI22-0040-1</p>
+</head><body class="c28 doc-content"><p class="a5">AI22-0040-1</p>
<sup><a href="#cmnt1" id="cmnt_ref1">[a]</a></sup><sup><a href="#cmnt2" id="cmnt_ref2">[b]</a></sup><p class="text"> </p>
<p class="head">!standard 7.6.1(3)
- 22-03-22 AI22-0040-1/02</p>
+ 22-09-09 AI22-0040-1/03</p>
<p class="head">!standard 4.4(9.7)</p>
<p class="head">!standard 6.6.1(22.12)</p>
<p class="head">!standard 7.6(18)</p>
<p class="head">!standard 7.6.1(13.1)</p>
<p class="head">!class binding interpretation 22-03-22</p>
+<p class="head">!status Corrigendum 1-2022 22-09-09</p>
+<p class="head">!status ARG Approved 10-0-0 22-09-09</p>
<p class="head">!status work item 22-03-04</p>
<p class="head">!status received 22-03-01</p>
<p class="head">!priority Medium</p>
@@ -91,7 +92,7 @@
classic case -- a quantified expression where the expression creates one or more controlled
temporaries upon each iteration:</p>
-<a id="t.d3821403bc86108120370f1e0af3bfa0b700c2f5"></a><a id="t.0"></a><table class="c23"><tr class="c40"><td class="c21">
+<a id="t.d3821403bc86108120370f1e0af3bfa0b700c2f5"></a><a id="t.0"></a><table class="c44"><tr class="c36"><td class="c40">
<p class="codt"> All_Positive : <b>constant</b> Boolean := (<b>for</b> <b>all</b> E <b>of</b>
C => F (E).B > 0);</p>
</td></tr></table><p class="text"> </p>
@@ -115,11 +116,11 @@
<p class="word">The following subexpressions are repeatedly evaluated:</p>
<ul class="wbls"><li>A subexpression of a predicate of a
-<span class="ntrm"><a class="c8" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-5-8.html#S0153">quantified_expression</a></span>;</li>
+<span class="ntrm"><a class="c17" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-5-8.html#S0153">quantified_expression</a></span>;</li>
<li>A subexpression of the expression of an
-<span class="ntrm"><a class="c8" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-3-3.html#S0118">array_component_association</a></span>;</li>
+<span class="ntrm"><a class="c17" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-3-3.html#S0118">array_component_association</a></span>;</li>
<li>A subexpression of the expression of a
-<span class="ntrm"><a class="c8" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-3-5.html#S0128">container_element_association</a></span>.</li>
+<span class="ntrm"><a class="c17" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-3-5.html#S0128">container_element_association</a></span>.</li>
</ul>
<p class="txts">This seems to be missing the case of the key_expression and the expression of an
@@ -167,7 +168,7 @@
coextensions, etc. But alas, we are not "officially" allowed to, because when the
object was created, it was associated with the master of the function call, and so isn't
expected to be finalized before that master is complete. But as above, that is undesirable
-from both a performance and compiler complexity <span class="a54">point of view. Hence, we
+from both a performance and compiler complexity <span class="a52">point of view. Hence, we
recommend an implementation permission, probably in front of 7.6(18/3), as the first implementation
permission, immediately after the discussion of "built in place", to permit immediate
finalization of such objects.</span></p>
@@ -222,7 +223,7 @@
<p class="txts">It should be noted that this issue occurs even in Ada 95 constructs, such as array
aggregates:</p>
-<a id="t.ce0b75da1a336240417d5578e4ebd2b9e594b9c0"></a><a id="t.1"></a><table class="c23"><tr class="c40"><td class="c21">
+<a id="t.ce0b75da1a336240417d5578e4ebd2b9e594b9c0"></a><a id="t.1"></a><table class="c44"><tr class="c36"><td class="c40">
<p class="codt"> <b>return</b> (1 .. Computed_Length => Func.C);</p>
</td></tr></table><p class="text"> </p>
<p class="txts">where Func returns a controlled object.</p>
@@ -230,7 +231,7 @@
<p class="txts">It also should be noted that the proposed solution is (slightly) incompatible, as a
construct like:</p>
-<a id="t.d6b03f567caee4099daa0b9f34192c93428c2377"></a><a id="t.2"></a><table class="c23"><tr class="c40"><td class="c21">
+<a id="t.d6b03f567caee4099daa0b9f34192c93428c2377"></a><a id="t.2"></a><table class="c44"><tr class="c36"><td class="c40">
<p class="codt"> <b>return</b> Some_Array'(<b>others</b> => Cont_Func(2));</p>
</td></tr></table><p class="text"> </p>
<p class="txts">where Cont_Func is a function returning a container, would become illegal as the
@@ -243,14 +244,14 @@
into it. The first is an obvious performance and implementation problem, and the latter is allowing
erroneous execution for an innocuous construct.</p>
-<p class="text">Some of these cases can be eliminated by e<span class="a54">liminating the
+<p class="text">Some of these cases can be eliminated by e<span class="a52">liminating the
temporaries using the various build-in-place permissions. But we don’t want the language to
effectively require the use of those permissions.</span></p>
<h2 class="head">!example</h2>
<p class="txts">Here is the example given in the !issue section:</p>
-<a id="t.d3821403bc86108120370f1e0af3bfa0b700c2f5"></a><a id="t.3"></a><table class="c23"><tr class="c40"><td class="c21">
+<a id="t.d3821403bc86108120370f1e0af3bfa0b700c2f5"></a><a id="t.3"></a><table class="c44"><tr class="c36"><td class="c40">
<p class="codt"> All_Positive : <b>constant</b> Boolean := (<b>for</b> <b>all</b> E <b>of</b>
C => F (E).B > 0);</p>
</td></tr></table><p class="text"> </p>
@@ -261,7 +262,7 @@
<p class="txts">In addition, in a case where such an expression is being used to initialize a newly
created object, such as in:</p>
-<a id="t.2007e6bb869143d669a272531a7f87d542e60f2d"></a><a id="t.4"></a><table class="c23"><tr class="c40"><td class="c21">
+<a id="t.2007e6bb869143d669a272531a7f87d542e60f2d"></a><a id="t.4"></a><table class="c44"><tr class="c36"><td class="c40">
<p class="codt"> Aggr : <b>constant</b> Array_Of_Controlled := [<b>for</b> I <b>in</b> 1 ..
100 => F(I)];</p>
</td></tr></table><p class="text"> </p>
@@ -273,7 +274,7 @@
<p class="txts">The need for this extra permission does not only come up in iterative contexts.
It can also be as simple as:</p>
-<a id="t.d14724bd4238c5459e427529e95837135cdb0d22"></a><a id="t.5"></a><table class="c23"><tr class="c40"><td class="c21">
+<a id="t.d14724bd4238c5459e427529e95837135cdb0d22"></a><a id="t.5"></a><table class="c44"><tr class="c36"><td class="c40">
<p class="codt"> X : <b>constant</b> Has_Controlled_Part := F(Y);</p>
</td></tr></table><p class="text"> </p>
<p class="text">presuming that the compiler does not build the result of F(Y) directly in X.
@@ -316,22 +317,22 @@
"repeatedly evaluated" expressions, as part of defining "known on entry" in
6.1.1, Preconditions and Postconditions, paragraphs 22.12/5 to 22.15/5:</p>
-<p class="a36">22.12/5</p>
-<p class="a65"><span class="a66">
- {</span><span class="a67"><a class="c8" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0280-2.TXT">AI12-0280-2</a></span><span class="a66">}
-</span><span class="a68">The following subexpressions are repeatedly evaluated:</span></p>
-<p class="a36">22.13/5</p>
-<p class="a69"><span class="a70">{</span><span class="a71"><a class="c8" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0280-2.TXT">AI12-0280-2</a></span><span class="a70">}
+<p class="a35">22.12/5</p>
+<p class="a63"><span class="a64">
+ {</span><span class="a65"><a class="c17" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0280-2.TXT">AI12-0280-2</a></span><span class="a64">}
+</span><span class="a66">The following subexpressions are repeatedly evaluated:</span></p>
+<p class="a35">22.13/5</p>
+<p class="a69"><span class="a70">{</span><span class="a71"><a class="c17" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0280-2.TXT">AI12-0280-2</a></span><span class="a70">}
</span><span class="a72">A subexpression of a predicate of a
-</span><span class="a73"><a class="c8" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-5-8.html#S0153">quantified_expression</a></span><span class="a74">;</span></p>
-<p class="a36">22.14/5</p>
-<p class="a69"><span class="a70">{</span><span class="a71"><a class="c8" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0280-2.TXT">AI12-0280-2</a></span><span class="a70">}
+</span><span class="a73"><a class="c17" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-5-8.html#S0153">quantified_expression</a></span><span class="a74">;</span></p>
+<p class="a35">22.14/5</p>
+<p class="a69"><span class="a70">{</span><span class="a71"><a class="c17" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0280-2.TXT">AI12-0280-2</a></span><span class="a70">}
</span><span class="a72">A subexpression of the expression of an
-</span><span class="a73"><a class="c8" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-3-3.html#S0118">array_component_association</a></span><span class="a74">;</span></p>
-<p class="a36">22.15/5</p>
-<p class="a88"><span class="a70">{</span><span class="a71"><a class="c8" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0280-2.TXT">AI12-0280-2</a></span><span class="a70">}
+</span><span class="a73"><a class="c17" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-3-3.html#S0118">array_component_association</a></span><span class="a74">;</span></p>
+<p class="a35">22.15/5</p>
+<p class="a88"><span class="a70">{</span><span class="a71"><a class="c17" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0280-2.TXT">AI12-0280-2</a></span><span class="a70">}
</span><span class="a72">A subexpression of the expression of a
-</span><span class="a73"><a class="c8" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-3-5.html#S0128">container_element_association</a></span><span class="a74">.</span></p>
+</span><span class="a73"><a class="c17" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-3-5.html#S0128">container_element_association</a></span><span class="a74">.</span></p>
<p class="txts">This seems to be missing the case of the key_expression and the expression of an
@@ -371,13 +372,13 @@
3.10.2(10.1/3-10.2/5) we define the "master of the function call" for a function whose
(composite) result is used to initialize an object:</p>
-<p class="a36">10.1/3</p>
-<p class="a77">{<span class="a67"><a class="c8" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI05s/AI05-0234-1.TXT">AI05-0234-1</a></span>}
+<p class="a35">10.1/3</p>
+<p class="a77">{<span class="a65"><a class="c17" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI05s/AI05-0234-1.TXT">AI05-0234-1</a></span>}
The accessibility level of the result of a function call is that of the <i>master of the function
call</i><span class="a78">, which is determined by the point of call as follows:</span></p>
-<p class="a36">10.2/5</p>
-<p class="a79">{<span class="a67"><a class="c8" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI05s/AI05-0234-1.TXT">AI05-0234-1</a></span>}
-{<span class="a67"><a class="c8" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0402-1.TXT">AI12-0402-1</a></span>}
+<p class="a35">10.2/5</p>
+<p class="a79">{<span class="a65"><a class="c17" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI05s/AI05-0234-1.TXT">AI05-0234-1</a></span>}
+{<span class="a65"><a class="c17" href="http://www.ada-auth.org/cgi-bin/cvsweb.cgi/AI12s/AI12-0402-1.TXT">AI12-0402-1</a></span>}
If <span class="a80">the result type at the point of the function (or access-to-function type)
declaration is a composite type, and </span><span class="a78">the result is used (in its entirety)
to directly initialize part of an object, the master is that of the object being initialized. In
@@ -550,7 +551,7 @@
"active AIs" folder:</p>
<p class="txts">
- <span class="a19"><a class="c8" href="https://docs.google.com/document/d/1f1GIa7gP2yx_W76tE2lcVEnYFoY3VDC06QKhXlmEfwc/edit?usp=sharing">AI22-0040-1
+ <span class="c24"><a class="c17" href="https://docs.google.com/document/d/1f1GIa7gP2yx_W76tE2lcVEnYFoY3VDC06QKhXlmEfwc/edit?usp=sharing">AI22-0040-1
Finalization and Implicit Loops</a></span></p>
<p class="txts">Please use Google docs to record any specific comments or suggestions.</p>
@@ -636,11 +637,11 @@
<p class="txts">I am unsure what you are talking about here. The permission in 7.6 in the
draft AI says:</p>
-<p class="a44">If the result of a function call is used to initialize an object, but the result is
+<p class="a43">If the result of a function call is used to initialize an object, but the result is
</p>
-<p class="a44">not built in place, the anonymous object representing the result of the function
+<p class="a43">not built in place, the anonymous object representing the result of the function
</p>
-<p class="a44">call may be finalized and become nonexistent immediately after the </p>
+<p class="a43">call may be finalized and become nonexistent immediately after the </p>
<p class="a91">initialization of the newly-created object is
complete.<span class="a82"> </span></p>
@@ -678,17 +679,17 @@
<p class="text">>And if so, then why do we need to mention the loop-y
expressions?<span class="a84"> </span></p>
<p class="text"> </p>
-<p class="a46">My understanding was that the permission only applied to calls that could be
+<p class="a45">My understanding was that the permission only applied to calls that could be
build-in-place, since those are the only ones that have a possibly extended lifetime (such that the
object might exceed the lifetime of the master of the expression).</p>
-<p class="a48"> </p>
-<p class="a46">There's no build-in-place context in the above, so I don't see how it could
+<p class="a47"> </p>
+<p class="a45">There's no build-in-place context in the above, so I don't see how it could
or should apply in such cases. If you had used an allocator rather than a procedure, then it could
have applied. For instance:</p>
-<p class="a48"> </p>
-<p class="a46"> P := new
+<p class="a47"> </p>
+<p class="a45"> P := new
Some_Type'(F(G(X));</p>
-<p class="a48"> </p>
+<p class="a47"> </p>
<p class="a92">I'd be against allowing willy-nilly finalization of return objects; I only
agreed to the permission because it's fairly clearly that iterative contexts have an
implementation problem which needs some sort of solution. I don't want to see such permissions
@@ -931,7 +932,7 @@
-<div class="c58"><p class="txts"><a href="#cmnt_ref1">[a]</a>If we have something like:</p>
+<div class="c21"><p class="txts"><a href="#cmnt_ref1">[a]</a>If we have something like:</p>
<p class="txts">X := (for all Y of blah => F(...) = G(...));</p>
@@ -975,7 +976,7 @@
<p class="txts">A returns.</p>
<p class="text">@taft@adacore.com @baird@adacore.com @dismukes@adacore.com @squirek@adacore.com</p>
-</div><div class="c58"><p class="text"><a href="#cmnt_ref2">[b]</a>We looked at all of those ideas
+</div><div class="c21"><p class="text"><a href="#cmnt_ref2">[b]</a>We looked at all of those ideas
in the 76 private messages before this was proposed. But a proper discussion of philosophy cannot
done here; I'll answer on the ARG list.</p>
</div></body></html>
Questions? Ask the ACAA Technical Agent