Skip to content

Commit e6398d7

Browse files
committed
Set priorities based on reflector polls
1 parent a7d8a5f commit e6398d7

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

xml/issue4009.xml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?xml version='1.0' encoding='utf-8' standalone='no'?>
22
<!DOCTYPE issue SYSTEM "lwg-issue.dtd">
33

4-
<issue num="4009" status="New">
4+
<issue num="4009" status="Tentatively NAD">
55
<title><tt>drop_view::begin const</tt> may have &#x1d4aa;(n) complexity</title>
66
<section><sref ref="[range.drop.view]"/></section>
77
<submitter>Hewill Kang</submitter>
88
<date>08 Nov 2023</date>
9-
<priority>99</priority>
9+
<priority>3</priority>
1010

1111
<discussion>
1212
<p>
@@ -24,6 +24,16 @@ int main() {
2424
}
2525
</pre></blockquote>
2626

27+
28+
<note>2025-10-22; Reflector poll. Status changed: New &rarr; Tentatively NAD</note>
29+
<p>
30+
Set priority to 3 after reflector poll, status to Tentatively NAD.
31+
</p>
32+
<p>
33+
"NAD, it's <i>Returns</i>: not '<i>Effects</i>: Equivalent to ...',
34+
implementations need to implement it to return that while meeting the
35+
amortized &#x1d4aa;(1) guarantee."
36+
</p>
2737
</discussion>
2838

2939
<resolution>

xml/issue4110.xml

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<section><sref ref="[util.smartptr.shared.const]"/></section>
77
<submitter>Louis Dionne</submitter>
88
<date>11 Jun 2024</date>
9-
<priority>99</priority>
9+
<priority>3</priority>
1010

1111
<discussion>
1212
<p>
@@ -27,6 +27,38 @@ which leads to a hard error inside the lambda since it is called with a
2727
</p><p>
2828
See <a href="https://github.com/llvm/llvm-project/pull/93071#issuecomment-2158494851">LLVM issue 93071 comment</a> for additional context.
2929
</p>
30+
31+
<note>2025-10-22; Reflector poll.</note>
32+
<p>
33+
Set priority to 3 after reflector poll.
34+
</p>
35+
<p>
36+
"I don't agree with the proposed resolution. As a general principle,
37+
<code>shared_ptr&lt;T&gt;(p, d)</code> always calls `d(p)` and never
38+
<code>d(static_cast&lt;T*&gt;(p))</code>.
39+
<br/>
40+
If we really want to make this work, which is not unreasonable, even though
41+
the fix on the user side is trivial, we should make the `nullptr_t` constructor
42+
templated on <code>same_as&lt;nullptr_t&gt;</code>
43+
(or <code>convertible_to&lt;nullptr_t&gt;</code>?)."
44+
</p>
45+
<p>
46+
"That would break passing `NULL`, only `nullptr` would work.
47+
It can be made to work by checking that `d(p)` is well-formed in a
48+
function parameter with a default argument,
49+
instead of as a template parameter:"
50+
<pre>struct shared_ptr {
51+
template&lt;class Y, class D&gt;
52+
shared_ptr(Y* p, D d, std::void_t&lt;decltype(d(p))&gt;* = nullptr) {}
53+
template&lt;class D&gt;
54+
shared_ptr(std::nullptr_t p, D d, std::void_t&lt;decltype(d(p))&gt;* = nullptr) {}
55+
};
56+
shared_ptr s(new int, [](auto p) {delete p;});
57+
</pre>
58+
</p>
59+
<p>
60+
"Ugh. We don't have to use it everywhere, only these two specific constructors."
61+
</p>
3062
</discussion>
3163

3264
<resolution>

0 commit comments

Comments
 (0)