Skip to content

Commit 9b373dd

Browse files
committed
Jonathan adds wording to 3956
1 parent 994c292 commit 9b373dd

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

xml/issue3956.xml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,74 @@ lookup (i.e. unqualified lookup plus ADL) or just ADL, as was done for
3131
Set priority to 3 after reflector poll.
3232
</p>
3333

34+
<note>2024-12-02; Jonathan provides wording</note>
35+
<p>
36+
I suggest that `from_stream` should only be found via ADL,
37+
not unqualified lookup. This is consistent with what we did for
38+
`make_error_code` and `make_error_condition`, and more recently for
39+
`submdspan_mapping`. I see no reason to treat `from_stream` differently.
40+
This implies that implementations might need a poison poll in `std::chrono`
41+
so that unqualified lookup stops as soon as those are found.
42+
</p>
43+
3444
</discussion>
3545

3646
<resolution>
3747
<p>
48+
This wording is relative to <paper num="N4993"/>.
49+
</p>
50+
51+
<ol>
52+
<li><p>Modify <sref ref="[contents]"/> as indicated:</p>
53+
54+
<blockquote>
55+
<p>
56+
-3-
57+
Whenever an unqualified name other than
58+
`swap`, `make_error_code`, `make_error_condition`,
59+
<ins>`from_stream`,</ins>
60+
or `submdspan_mapping`
61+
is used in the specification of a declaration `D`
62+
in Clause 17 through Clause 33 or Annex D,
63+
its meaning is established as-if by performing unqualified name lookup
64+
(<sref ref="[basic.lookup.unqual]"/>)
65+
in the context of `D`.
66+
</p>
67+
<p>
68+
[<i>Note 1</i>:
69+
Argument-dependent lookup is not performed. &mdash; <i>end note</i>]
3870
</p>
71+
<p>
72+
Similarly, the meaning of a <i>qualified-id</i> is established as-if
73+
by performing qualified name lookup (<sref ref="[basic.lookup.qual]"/>)
74+
in the context of `D`.
75+
</p>
76+
<p>
77+
[<i>Example 1</i>:
78+
The reference to `is_array_v` in the specification of `std::to_array`
79+
(<sref ref="[array.creation]"/>) refers to `::std::is_array_v`.
80+
&mdash; <i>end example</i>]
81+
</p>
82+
<p>
83+
[<i>Note 2</i>: Operators in expressions (<sref ref="[over.match.oper]"/>)
84+
are not so constrained; see <sref ref="[global.functions]"/>.
85+
&mdash; <i>end note</i>]
86+
</p>
87+
<p>
88+
The meaning of the unqualified name `swap` is established
89+
in an overload resolution context for swappable values
90+
(<sref ref="[swappable.requirements]"/>).
91+
The meanings of the unqualified names
92+
`make_error_code`, `make_error_condition`,
93+
<ins>`from_stream`,</ins>
94+
and `submdspan_mapping`
95+
are established as-if by performing argument-dependent lookup
96+
(<sref ref="[basic.lookup.argdep]"/>).
97+
</p>
98+
</blockquote>
99+
</li>
100+
</ol>
101+
39102
</resolution>
40103

41104
</issue>

0 commit comments

Comments
 (0)