Skip to content

Commit 3840c56

Browse files
committed
New issue from Jiang An: "The meaning of "resource" in the Cpp17Destructible requirements is undefined"
1 parent 62064a0 commit 3840c56

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

xml/issue4317.xml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?xml version='1.0' encoding='utf-8' standalone='no'?>
2+
<!DOCTYPE issue SYSTEM "lwg-issue.dtd">
3+
4+
<issue num="4317" status="New">
5+
<title>The meaning of "resource" in the <i>Cpp17Destructible</i> requirements is undefined</title>
6+
<section>
7+
<sref ref="[utility.arg.requirements]"/>
8+
</section>
9+
<submitter>Jiang An</submitter>
10+
<date>15 Aug 2025</date>
11+
<priority>99</priority>
12+
13+
<discussion>
14+
<p>
15+
The meaning of "resource" in the <i>Cpp17Destructible</i> requirements cannot be inferred
16+
from the standard wording and it seems unlikely that the standard will determine its meaning
17+
in the future. What are considered as resources generally depends on users' intent, so the
18+
standard shouldn't determine the well-definedness of a program execution due to it. Moreover,
19+
the wording doesn't seem to consider shared ownership, which can be represented by `shared_ptr`.
20+
</p>
21+
</discussion>
22+
23+
<resolution>
24+
<p>
25+
This wording is relative to <paper num="N5014"/>.
26+
</p>
27+
28+
<ol>
29+
30+
<li><p>Modify <sref ref="[utility.arg.requirements]"/>, Table 35 [tab:cpp17.destructible] as indicated:</p>
31+
32+
<blockquote>
33+
<table border="1">
34+
<caption>Table 35 &mdash; <tt>Cpp17Destructible</tt> requirements [tab:cpp17.destructible]</caption>
35+
<tr>
36+
<th>Expression</th>
37+
<th>Post-condition</th>
38+
</tr>
39+
<tr>
40+
<td>
41+
<tt>u.~T()</tt>
42+
</td>
43+
<td>
44+
<del>All resources owned by `u` are reclaimed, n</del><ins>N</ins>o exception is propagated.
45+
</td>
46+
</tr>
47+
<tr>
48+
<td colspan="2">
49+
[<i>Note 3:</i> Array types and non-object types are not <i>Cpp17Destructible</i>. &mdash; <i>end note</i>]
50+
</td>
51+
</tr>
52+
</table>
53+
54+
</blockquote>
55+
56+
</li>
57+
58+
</ol>
59+
</resolution>
60+
61+
</issue>

0 commit comments

Comments
 (0)