Skip to content

Commit 10dd6fe

Browse files
committed
[std] Fix cross-references to 'unevaluated operand'
1 parent 8114ccd commit 10dd6fe

File tree

8 files changed

+32
-31
lines changed

8 files changed

+32
-31
lines changed

source/algorithms.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10805,7 +10805,7 @@
1080510805
\pnum
1080610806
\constraints
1080710807
The expression \tcode{::new (declval<void*>()) T(declval<Args>()...)}
10808-
is well-formed when treated as an unevaluated operand.
10808+
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}.
1080910809

1081010810
\pnum
1081110811
\effects

source/declarations.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1589,7 +1589,7 @@
15891589
\end{itemize}
15901590

15911591
The operand of the \keyword{decltype} specifier is an unevaluated
1592-
operand\iref{expr.prop}.
1592+
operand\iref{term.unevaluated.operand}.
15931593

15941594
\begin{example}
15951595
\begin{codeblock}
@@ -4102,7 +4102,7 @@
41024102
int f(int a, int b = a); // error: parameter \tcode{a} used as default argument
41034103
typedef int I;
41044104
int g(float I, int b = I(2)); // error: parameter \tcode{I} found
4105-
int h(int a, int b = sizeof(a)); // OK, unevaluated operand
4105+
int h(int a, int b = sizeof(a)); // OK, unevaluated operand\iref{term.unevaluated.operand}
41064106
\end{codeblock}
41074107
\end{example}
41084108
A non-static member shall not appear in a default argument unless it appears as

source/expressions.tex

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@
424424
\rSec2[expr.context]{Context dependence}
425425

426426
\pnum
427+
\label{term.unevaluated.operand}%
427428
In some contexts, \defnx{unevaluated operands}{unevaluated operand}
428429
appear~(\ref{expr.prim.req},
429430
\ref{expr.typeid},
@@ -1382,7 +1383,7 @@
13821383
In the declaration of \tcode{p2},
13831384
those constraints are required to be satisfied
13841385
even though
1385-
\tcode{f} is an unevaluated operand\iref{expr.prop}.
1386+
\tcode{f} is an unevaluated operand\iref{term.unevaluated.operand}.
13861387
\end{example}
13871388
\end{note}
13881389

@@ -2622,7 +2623,7 @@
26222623
A \grammarterm{requires-expression} is a prvalue of type \tcode{bool}
26232624
whose value is described below.
26242625
Expressions appearing within a \grammarterm{requirement-body}
2625-
are unevaluated operands\iref{expr.prop}.
2626+
are unevaluated operands\iref{term.unevaluated.operand}.
26262627

26272628
\pnum
26282629
\begin{example}
@@ -2709,7 +2710,7 @@
27092710
\begin{note}
27102711
The enclosing \grammarterm{requires-expression} will evaluate to \keyword{false}
27112712
if substitution of template arguments into the \grammarterm{expression} fails.
2712-
The \grammarterm{expression} is an unevaluated operand\iref{expr.prop}.
2713+
The \grammarterm{expression} is an unevaluated operand\iref{term.unevaluated.operand}.
27132714
\end{note}
27142715
\begin{example}
27152716
\begin{codeblock}
@@ -2884,7 +2885,7 @@
28842885
\end{example}
28852886

28862887
\pnum
2887-
A local parameter shall only appear as an unevaluated operand\iref{expr.prop}
2888+
A local parameter shall only appear as an unevaluated operand\iref{term.unevaluated.operand}
28882889
within the \grammarterm{constraint-expression}.
28892890
\begin{example}
28902891
\begin{codeblock}
@@ -3674,7 +3675,7 @@
36743675
If the expression is a prvalue,
36753676
the temporary materialization conversion\iref{conv.rval}
36763677
is applied.
3677-
The expression is an unevaluated operand\iref{expr.prop}.
3678+
The expression is an unevaluated operand\iref{term.unevaluated.operand}.
36783679

36793680
\pnum
36803681
When \keyword{typeid} is applied to a \grammarterm{type-id}, the result
@@ -4664,7 +4665,7 @@
46644665
The \keyword{sizeof} operator yields the number of bytes
46654666
occupied by a non-potentially-overlapping object of the type
46664667
of its operand. The operand is either an expression,
4667-
which is an unevaluated operand\iref{expr.prop}, or a parenthesized
4668+
which is an unevaluated operand\iref{term.unevaluated.operand}, or a parenthesized
46684669
\grammarterm{type-id}.
46694670
\indextext{type!incomplete}%
46704671
The \keyword{sizeof} operator shall not be applied to an expression that
@@ -4779,7 +4780,7 @@
47794780
\indextext{\idxcode{noexcept}}%
47804781
\indextext{expression!\idxcode{noexcept}}%
47814782
The \keyword{noexcept} operator determines whether the evaluation of its operand,
4782-
which is an unevaluated operand\iref{expr.prop}, can throw an
4783+
which is an unevaluated operand\iref{term.unevaluated.operand}, can throw an
47834784
exception\iref{except.throw}.
47844785

47854786
\begin{bnf}
@@ -6903,7 +6904,7 @@
69036904
A simple assignment whose left operand is of
69046905
a volatile-qualified type is deprecated\iref{depr.volatile.type}
69056906
unless the (possibly parenthesized) assignment is a discarded-value expression or
6906-
an unevaluated operand.
6907+
an unevaluated operand\iref{term.unevaluated.operand}.
69076908

69086909
\pnum
69096910
The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2}
@@ -7539,7 +7540,7 @@
75397540
\end{itemize}
75407541
\begin{note}
75417542
A manifestly constant-evaluated expression
7542-
is evaluated even in an unevaluated operand.
7543+
is evaluated even in an unevaluated operand\iref{term.unevaluated.operand}.
75437544
\end{note}
75447545

75457546
\pnum
@@ -7569,7 +7570,7 @@
75697570

75707571
\item
75717572
a subexpression of one of the above
7572-
that is not a subexpression of a nested unevaluated operand.
7573+
that is not a subexpression of a nested unevaluated operand\iref{term.unevaluated.operand}.
75737574
\end{itemize}
75747575

75757576
\indextext{function!needed for constant evaluation}%

source/future.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1629,7 +1629,7 @@
16291629
\pnum
16301630
Let \tcode{TS} denote \tcode{tuple_size<T>} of the cv-unqualified type \tcode{T}.
16311631
If the expression \tcode{TS::value} is well-formed
1632-
when treated as an unevaluated operand,
1632+
when treated as an unevaluated operand\iref{term.unevaluated.operand},
16331633
then specializations of each of the two templates meet
16341634
the \oldconcept{TransformationTrait} requirements with a base characteristic of
16351635
\tcode{integral_constant<size_t, TS::value>}.

source/iostreams.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5673,7 +5673,7 @@
56735673
\pnum
56745674
\constraints
56755675
The expression \tcode{is >> std::forward<T>(x)} is well-formed
5676-
when treated as an unevaluated operand and
5676+
when treated as an unevaluated operand\iref{term.unevaluated.operand} and
56775677
\tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}.
56785678

56795679
\pnum

source/threads.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7483,7 +7483,7 @@
74837483
\pnum
74847484
\constraints
74857485
\tcode{\&F::operator()} is well-formed when
7486-
treated as an unevaluated operand and
7486+
treated as an unevaluated operand\iref{term.unevaluated.operand} and
74877487
\tcode{decltype(\brk{}\&F::operator())} is of the form
74887488
\tcode{R(G::*)(A...)}~\cv{}~\tcode{\opt{\&}~\opt{noexcept}}
74897489
for a class type \tcode{G}.

source/time.tex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,7 @@
11821182
are valid and each denotes a type\iref{temp.deduct},
11831183
\item the expression
11841184
\tcode{T::is_steady}
1185-
is well-formed when treated as an unevaluated operand,
1185+
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand},
11861186
\item the expression
11871187
\tcode{T::now()}
11881188
is well-formed when treated as an unevaluated operand.
@@ -10988,7 +10988,7 @@
1098810988
\begin{codeblock}
1098910989
from_stream(declval<basic_istream<charT, traits>&>(), fmt.c_str(), tp)
1099010990
\end{codeblock}
10991-
is well-formed when treated as an unevaluated operand.
10991+
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}.
1099210992

1099310993
\pnum
1099410994
\returns
@@ -11013,7 +11013,7 @@
1101311013
\begin{codeblock}
1101411014
from_stream(declval<basic_istream<charT, traits>&>(), fmt.c_str(), tp, addressof(abbrev))
1101511015
\end{codeblock}
11016-
is well-formed when treated as an unevaluated operand.
11016+
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}.
1101711017

1101811018
\pnum
1101911019
\returns
@@ -11041,7 +11041,7 @@
1104111041
declval<basic_string<charT, traits, Alloc>*>(),
1104211042
&offset)
1104311043
\end{codeblock}
11044-
is well-formed when treated as an unevaluated operand.
11044+
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}.
1104511045

1104611046
\pnum
1104711047
\returns
@@ -11073,7 +11073,7 @@
1107311073
from_stream(declval<basic_istream<charT, traits>&>(),
1107411074
fmt.c_str(), tp, addressof(abbrev), &offset)
1107511075
\end{codeblock}
11076-
is well-formed when treated as an unevaluated operand.
11076+
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}.
1107711077

1107811078
\pnum
1107911079
\returns

source/utilities.tex

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@
407407

408408
\pnum
409409
The library provides the function template \tcode{declval} to simplify the definition of
410-
expressions which occur as unevaluated operands\iref{expr.prop}.
410+
expressions which occur as unevaluated operands\iref{term.unevaluated.operand}.
411411

412412
\indexlibraryglobal{declval}%
413413
\begin{itemdecl}
@@ -2108,7 +2108,7 @@
21082108
\pnum
21092109
Let \tcode{TS} denote \tcode{tuple_size<T>} of the cv-unqualified type \tcode{T}.
21102110
If the expression \tcode{TS::value} is well-formed
2111-
when treated as an unevaluated operand, then
2111+
when treated as an unevaluated operand\iref{term.unevaluated.operand}, then
21122112
each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts}
21132113
with a base characteristic of
21142114
\begin{codeblock}
@@ -15591,7 +15591,7 @@
1559115591
and return type \tcode{R}
1559215592
if the expression
1559315593
\tcode{\placeholdernc{INVOKE}<R>(declval<F\&>(), declval<ArgTypes>()...)},
15594-
considered as an unevaluated operand\iref{expr.prop}, is
15594+
considered as an unevaluated operand\iref{term.unevaluated.operand}, is
1559515595
well-formed\iref{func.require}.
1559615596

1559715597
\pnum
@@ -15747,7 +15747,7 @@
1574715747
\begin{itemdescr}
1574815748
\pnum
1574915749
\constraints
15750-
\tcode{\&F::operator()} is well-formed when treated as an unevaluated operand and
15750+
\tcode{\&F::operator()} is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand} and
1575115751
\tcode{decltype(\brk{}\&F::operator())} is of the form
1575215752
\tcode{R(G::*)(A...)}~\cv{}~\tcode{\opt{\&}~\opt{noexcept}}
1575315753
for a class type \tcode{G}.
@@ -17181,7 +17181,7 @@
1718117181
\tcode{struct is_assignable;} &
1718217182
The expression \tcode{declval<T>() =} \tcode{declval<U>()} is well-formed
1718317183
when treated as an unevaluated
17184-
operand\iref{expr.prop}. Access checking is performed as if in a context
17184+
operand\iref{term.unevaluated.operand}. Access checking is performed as if in a context
1718517185
unrelated to \tcode{T} and \tcode{U}. Only the validity of the immediate context
1718617186
of the assignment expression is considered.
1718717187
\begin{tailnote}
@@ -17216,7 +17216,7 @@
1721617216
\tcode{struct is_swappable_with;} &
1721717217
The expressions \tcode{swap(declval<T>(), declval<U>())} and
1721817218
\tcode{swap(declval<U>(), declval<T>())} are each well-formed
17219-
when treated as an unevaluated operand\iref{expr.prop}
17219+
when treated as an unevaluated operand\iref{term.unevaluated.operand}
1722017220
in an overload-resolution context
1722117221
for swappable values\iref{swappable.requirements}.
1722217222
Access checking is performed as if in a context
@@ -17254,7 +17254,7 @@
1725417254
for which the expression
1725517255
\tcode{declval<U\&>().\~U()}
1725617256
is well-formed
17257-
when treated as an unevaluated operand\iref{expr.prop},
17257+
when treated as an unevaluated operand\iref{term.unevaluated.operand},
1725817258
where \tcode{U} is
1725917259
\tcode{remove_all_extents_t<T>}. &
1726017260
\tcode{T} shall be a complete type, \cv{}~\keyword{void},
@@ -17680,7 +17680,7 @@
1768017680
\tcode{template<class Fn, class... ArgTypes>}\br
1768117681
\tcode{struct is_invocable;} &
1768217682
The expression \tcode{\placeholdernc{INVOKE}(declval<Fn>(), declval<ArgTypes>()...)}
17683-
is well-formed when treated as an unevaluated operand &
17683+
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand} &
1768417684
\tcode{Fn} and all types in the template parameter pack \tcode{ArgTypes}
1768517685
shall be complete types, \cv{}~\keyword{void}, or
1768617686
arrays of unknown bound. \\ \rowsep
@@ -18144,7 +18144,7 @@
1814418144
\tcode{struct invoke_result;}
1814518145
&
1814618146
If the expression \tcode{\placeholdernc{INVOKE}(declval<Fn>(), declval<ArgTypes>()...)}
18147-
is well-formed when treated as an unevaluated operand\iref{expr.prop},
18147+
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand},
1814818148
the member typedef \tcode{type} names the type
1814918149
\tcode{decltype(\placeholdernc{INVOKE}(declval<Fn>(), declval<ArgTypes>()...))};
1815018150
otherwise, there shall be no member \tcode{type}. Access checking is
@@ -21350,7 +21350,7 @@
2135021350
typename Context::template formatter_type<T>()
2135121351
.format(declval<const T&>(), declval<Context&>())
2135221352
\end{codeblock}
21353-
shall be well-formed when treated as an unevaluated operand.
21353+
shall be well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}.
2135421354

2135521355
\pnum
2135621356
\effects

0 commit comments

Comments
 (0)