Skip to content

One \grammarterm{x}, two \grammarterm{x}{s} (and likewise) #6235

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions source/algorithms.tex
Original file line number Diff line number Diff line change
Expand Up @@ -7884,9 +7884,9 @@

\pnum
Subclause \ref{alg.set.operations} defines all the basic set operations on sorted structures.
They also work with \tcode{multiset}s\iref{multiset}
They also work with \tcode{multiset}{s}\iref{multiset}
containing multiple copies of equivalent elements.
The semantics of the set operations are generalized to \tcode{multiset}s
The semantics of the set operations are generalized to \tcode{multiset}{s}
in a standard way by defining \tcode{set_union}
to contain the maximum number of occurrences of every element,
\tcode{set_intersection} to contain the minimum, and so on.
Expand Down
20 changes: 10 additions & 10 deletions source/basic.tex
Original file line number Diff line number Diff line change
Expand Up @@ -863,7 +863,7 @@
template specializations do not bind names\iref{dcl.meaning};
those with qualified names target a specified scope, and
other friend declarations and
certain \grammarterm{elaborated-type-specifier}s\iref{dcl.type.elab}
certain \grammarterm{elaborated-type-specifier}{s}\iref{dcl.type.elab}
target a larger enclosing scope.
\item
Block-scope extern declarations target a larger enclosing scope
Expand Down Expand Up @@ -939,14 +939,14 @@
An implicit object parameter\iref{over.match.funcs}
is not part of the parameter-type-list.
\end{footnote}
equivalent\iref{temp.over.link} trailing \grammarterm{requires-clause}s
equivalent\iref{temp.over.link} trailing \grammarterm{requires-clause}{s}
(if any, except as specified in \ref{temp.friend}), and,
if both are non-static members,
they have corresponding object parameters, or
\item
both declare function templates with corresponding signatures and equivalent
\grammarterm{template-head}s and
trailing \grammarterm{requires-clause}s (if any).
\grammarterm{template-head}{s} and
trailing \grammarterm{requires-clause}{s} (if any).
\end{itemize}
\end{itemize}
\begin{note}
Expand Down Expand Up @@ -998,7 +998,7 @@
\begin{note}
Overload resolution can consider potentially conflicting declarations
found in multiple scopes
(e.g., via \grammarterm{using-directive}s or for operator functions),
(e.g., via \grammarterm{using-directive}{s} or for operator functions),
in which case it is often ambiguous.
\end{note}
\begin{example}
Expand Down Expand Up @@ -1967,7 +1967,7 @@
The set of entities is determined entirely by
the types of the function arguments
(and any template template arguments).
Any \grammarterm{typedef-name}s and \grammarterm{using-declaration}{s}
Any \grammarterm{typedef-name}{s} and \grammarterm{using-declaration}{s}
used to specify the types
do not contribute to this set.
The set of entities
Expand Down Expand Up @@ -2022,7 +2022,7 @@
Additionally, if the aforementioned overload set is named with
a \grammarterm{template-id}, its associated entities also include
its template \grammarterm{template-argument}{s} and
those associated with its type \grammarterm{template-argument}s.
those associated with its type \grammarterm{template-argument}{s}.

\pnum
The \term{associated namespaces} for a call are
Expand Down Expand Up @@ -4831,7 +4831,7 @@
where \placeholder{N} is called the \defn{width} of the type.
\indextext{integral type!implementation-defined \tcode{sizeof}}%
\begin{note}
Plain \tcode{int}s are intended to have
Plain \tcode{int}{s} are intended to have
the natural width suggested by the architecture of the execution environment;
the other signed integer types are provided to meet special needs.
\end{note}
Expand Down Expand Up @@ -5404,7 +5404,7 @@
\end{itemize}
\begin{note}
The type of an object\iref{intro.object} includes
the \grammarterm{cv-qualifier}s specified in the
the \grammarterm{cv-qualifier}{s} specified in the
\grammarterm{decl-specifier-seq}\iref{dcl.spec},
\grammarterm{declarator}\iref{dcl.decl},
\grammarterm{type-id}\iref{dcl.name}, or
Expand Down Expand Up @@ -6574,7 +6574,7 @@
program is run. If
\tcode{argc} is nonzero these arguments shall be supplied in
\tcode{argv[0]} through \tcode{argv[argc-1]} as pointers to the initial
characters of null-terminated multibyte strings (\ntmbs{}s)\iref{multibyte.strings}
characters of null-terminated multibyte strings (\ntmbs{}{s})\iref{multibyte.strings}
and \tcode{argv[0]} shall be the pointer to
the initial character of a \ntmbs{} that represents the name used to
invoke the program or \tcode{""}. The value of \tcode{argc} shall be
Expand Down
8 changes: 4 additions & 4 deletions source/classes.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1088,7 +1088,7 @@
with the same first parameter type, or
\item they are both copy or move assignment operators
with the same first parameter type
and the same \grammarterm{cv-qualifier}s and \grammarterm{ref-qualifier}, if any.
and the same \grammarterm{cv-qualifier}{s} and \grammarterm{ref-qualifier}, if any.
\end{itemize}

\pnum
Expand Down Expand Up @@ -3740,7 +3740,7 @@
in a class $D$ derived (directly or indirectly) from $B$,
a declaration of a member function $G$
corresponds\iref{basic.scope.scope} to a declaration of $F$,
ignoring trailing \grammarterm{requires-clause}s,
ignoring trailing \grammarterm{requires-clause}{s},
\indextext{override|see{function, virtual, override}}%
then $G$ \defnx{overrides}{function!virtual!override}
\begin{footnote}
Expand Down Expand Up @@ -5807,7 +5807,7 @@
\ref{class.cdtor} describes the results of virtual function calls,
\tcode{typeid}
and
\keyword{dynamic_cast}s
\keyword{dynamic_cast}{s}
during construction for the well-defined cases;
that is, describes the polymorphic behavior
of an object under construction.
Expand Down Expand Up @@ -6144,7 +6144,7 @@
\indextext{destruction!dynamic cast and}%
\indextext{cast!dynamic!construction and}%
\indextext{cast!dynamic!destruction and}%
\keyword{dynamic_cast}s\iref{expr.dynamic.cast} can be used during construction
\keyword{dynamic_cast}{s}\iref{expr.dynamic.cast} can be used during construction
or destruction\iref{class.base.init}. When a
\keyword{dynamic_cast}
is used in a constructor (including the
Expand Down
22 changes: 11 additions & 11 deletions source/compatibility.tex
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@

\diffref{lex.string}
\change
Concatenated \grammarterm{string-literal}s can no longer have
conflicting \grammarterm{encoding-prefix}es.
Concatenated \grammarterm{string-literal}{s} can no longer have
conflicting \grammarterm{encoding-prefix}{es}.
\rationale
Removal of unimplemented conditionally-supported feature.
\effect
Concatenation of \grammarterm{string-literal}s
with different \grammarterm{encoding-prefix}es
Concatenation of \grammarterm{string-literal}{s}
with different \grammarterm{encoding-prefix}{es}
is now ill-formed.
For example:
\begin{codeblock}
Expand All @@ -43,7 +43,7 @@

\diffref{expr.prim.id.unqual}
\change
Change move-eligible \grammarterm{id-expression}s from lvalues to xvalues.
Change move-eligible \grammarterm{id-expression}{s} from lvalues to xvalues.
\rationale
Simplify the rules for implicit move.
\effect
Expand Down Expand Up @@ -1128,7 +1128,7 @@
\grammarterm{pp-number} can contain \tcode{p} \grammarterm{sign} and
\tcode{P} \grammarterm{sign}.
\rationale
Necessary to enable \grammarterm{hexadecimal-floating-point-literal}s.
Necessary to enable \grammarterm{hexadecimal-floating-point-literal}{s}.
\effect
Valid \CppXIV{} code may fail to compile or produce different results in
this revision of \Cpp{}. Specifically, character sequences like \tcode{0p+0}
Expand Down Expand Up @@ -1624,7 +1624,7 @@

\diffref{lex.pptoken}
\change
New kinds of \grammarterm{string-literal}s.
New kinds of \grammarterm{string-literal}{s}.
\rationale
Required for new features.
\effect
Expand Down Expand Up @@ -2213,13 +2213,13 @@

\diffref{lex.string}
\change
Concatenated \grammarterm{string-literal}s can no longer have
conflicting \grammarterm{encoding-prefix}es.
Concatenated \grammarterm{string-literal}{s} can no longer have
conflicting \grammarterm{encoding-prefix}{es}.
\rationale
Removal of non-portable feature.
\effect
Concatenation of \grammarterm{string-literal}s
with different \grammarterm{encoding-prefix}es
Concatenation of \grammarterm{string-literal}{s}
with different \grammarterm{encoding-prefix}{es}
is now ill-formed.
\difficulty
Syntactic transformation.
Expand Down
20 changes: 10 additions & 10 deletions source/containers.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1245,12 +1245,12 @@
\tcode{array} is provided as a sequence container which provides limited sequence operations
because it has a fixed number of elements. The library also provides container adaptors that
make it easy to construct abstract data types,
such as \tcode{stack}s,
\tcode{queue}s,
\tcode{flat_map}s,
\tcode{flat_multimap}s,
\tcode{flat_set}s, or
\tcode{flat_multiset}s, out of
such as \tcode{stack}{s},
\tcode{queue}{s},
\tcode{flat_map}{s},
\tcode{flat_multimap}{s},
\tcode{flat_set}{s}, or
\tcode{flat_multiset}{s}, out of
the basic sequence container kinds (or out of other program-defined sequence containers).

\pnum
Expand Down Expand Up @@ -2542,8 +2542,8 @@
\tcode{multimap}.
The library also provides container adaptors
that make it easy to construct abstract data types,
such as \tcode{flat_map}s, \tcode{flat_multimap}s,
\tcode{flat_set}s, or \tcode{flat_multiset}s,
such as \tcode{flat_map}{s}, \tcode{flat_multimap}{s},
\tcode{flat_set}{s}, or \tcode{flat_multiset}{s},
out of the basic sequence container kinds
(or out of other program-defined sequence containers).

Expand Down Expand Up @@ -4139,7 +4139,7 @@
when \tcode{X} supports equivalent keys,
\item
\tcode{a_tran} denotes a value of type \tcode{X} or \tcode{const X}
when the \grammarterm{qualified-id}s
when the \grammarterm{qualified-id}{s}
\tcode{X::key_equal::is_transparent} and
\tcode{X::hasher::is_transparent}
are both valid and denote types\iref{temp.deduct},
Expand Down Expand Up @@ -5861,7 +5861,7 @@
\tcode{find}, \tcode{count}, \tcode{equal_range}, \tcode{contains},
\tcode{extract}, and \tcode{erase}
shall not participate in overload resolution unless
the \grammarterm{qualified-id}s
the \grammarterm{qualified-id}{s}
\tcode{Pred::is_transparent} and
\tcode{Hash::is_transparent}
are both valid and denote types\iref{temp.deduct}.
Expand Down
18 changes: 9 additions & 9 deletions source/declarations.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1784,7 +1784,7 @@
template <class T> auto f(T t) { return t; } // return type deduced at instantiation time
typedef decltype(f(1)) fint_t; // instantiates \tcode{f<int>} to deduce return type
template<class T> auto f(T* t) { return *t; }
void g() { int (*p)(int*) = &f; } // instantiates both \tcode{f}s to determine return types,
void g() { int (*p)(int*) = &f; } // instantiates both \tcode{f}{s} to determine return types,
// chooses second
\end{codeblock}
\end{example}
Expand Down Expand Up @@ -5226,7 +5226,7 @@
and
\tcode{y[2]}.
The initializer ends early and therefore
\tcode{y[3]}s
\tcode{y[3]}{'s}
elements are initialized as if explicitly initialized with an
expression of the form
\tcode{float()},
Expand Down Expand Up @@ -6382,7 +6382,7 @@
\pnum
\begin{example}
One can prevent default initialization and
initialization by non-\tcode{double}s with
initialization by non-\tcode{double}{s} with
\begin{codeblock}
struct onlydouble {
onlydouble() = delete; // OK, but redundant
Expand Down Expand Up @@ -7250,7 +7250,7 @@

\pnum
\begin{note}
Two \grammarterm{using-enum-declaration}s
Two \grammarterm{using-enum-declaration}{s}
that introduce two enumerators of the same name conflict.
\begin{example}
\begin{codeblock}
Expand Down Expand Up @@ -7899,7 +7899,7 @@
\end{example}

\pnum
If a declaration is named by two \grammarterm{using-declarator}s
If a declaration is named by two \grammarterm{using-declarator}{s}
that inhabit the same class scope, the program is ill-formed.

\pnum
Expand Down Expand Up @@ -7939,7 +7939,7 @@
that inhabits the target scope of another declaration
potentially conflicts with it\iref{basic.scope.scope}, and
either is reachable from the other, the program is ill-formed.
If two declarations named by \grammarterm{using-declaration}s
If two declarations named by \grammarterm{using-declaration}{s}
that inhabit the same scope potentially conflict,
either is reachable from the other, and
they do not both declare functions or function templates,
Expand Down Expand Up @@ -8222,7 +8222,7 @@
A \grammarterm{module-import-declaration} appearing in
a linkage specification with other than \Cpp{} language linkage
is conditionally-supported with
\impldef{support for \grammarterm{module-import-declaration}s
\impldef{support for \grammarterm{module-import-declaration}{s}
with non-\Cpp{} language linkage} semantics.

\pnum
Expand Down Expand Up @@ -8909,7 +8909,7 @@
\indextext{attribute!unlikely}

\pnum
The \grammarterm{attribute-token}s
The \grammarterm{attribute-token}{s}
\tcode{likely} and \tcode{unlikely}
may be applied to labels or statements.
No \grammarterm{attribute-argument-clause} shall be present.
Expand Down Expand Up @@ -9034,7 +9034,7 @@
\end{note}
Redeclarations using different forms of the attribute
(with or without the \grammarterm{attribute-argument-clause}
or with different \grammarterm{attribute-argument-clause}s)
or with different \grammarterm{attribute-argument-clause}{s})
are allowed.

\pnum
Expand Down
2 changes: 1 addition & 1 deletion source/diagnostics.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1727,7 +1727,7 @@
template<class Allocator>
class basic_stacktrace;

// \tcode{basic_stacktrace} \grammarterm{typedef-name}s
// \tcode{basic_stacktrace} \grammarterm{typedef-name}{s}
using stacktrace = basic_stacktrace<allocator<stacktrace_entry>>;

// \ref{stacktrace.basic.nonmem}, non-member functions
Expand Down
14 changes: 7 additions & 7 deletions source/expressions.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2617,7 +2617,7 @@
entity captured by \tcode{m1}.
\end{itemize}
\begin{example}
The nested \grammarterm{lambda-expression}s and invocations below will output
The nested \grammarterm{lambda-expression}{s} and invocations below will output
\tcode{123234}.
\begin{codeblock}
int a = 1, b = 1, c = 1;
Expand Down Expand Up @@ -2795,7 +2795,7 @@

\pnum
\begin{example}
A common use of \grammarterm{requires-expression}s is to define
A common use of \grammarterm{requires-expression}{s} is to define
requirements in concepts such as the one below:
\begin{codeblock}
template<typename T>
Expand Down Expand Up @@ -2823,7 +2823,7 @@
A local parameter of a \grammarterm{requires-expression} shall not have a
default argument.
These parameters have no linkage, storage, or lifetime; they are only used
as notation for the purpose of defining \grammarterm{requirement}s.
as notation for the purpose of defining \grammarterm{requirement}{s}.
The \grammarterm{parameter-declaration-clause} of a
\grammarterm{requirement-parameter-list}
shall not terminate with an ellipsis.
Expand All @@ -2839,7 +2839,7 @@
\pnum
The substitution of template arguments into a \grammarterm{requires-expression}
may result in the formation of invalid types or expressions in its
\grammarterm{requirement}s or the violation of the semantic constraints of those \grammarterm{requirement}s.
\grammarterm{requirement}{s} or the violation of the semantic constraints of those \grammarterm{requirement}{s}.
In such cases, the \grammarterm{requires-expression} evaluates to \keyword{false};
it does not cause the program to be ill-formed.
The substitution and semantic constraint checking
Expand All @@ -2849,7 +2849,7 @@
the \grammarterm{requires-expression} evaluates to \keyword{true}.
\begin{note}
If a \grammarterm{requires-expression} contains invalid types or expressions in
its \grammarterm{requirement}s, and it does not appear within the declaration of a templated
its \grammarterm{requirement}{s}, and it does not appear within the declaration of a templated
entity, then the program is ill-formed.
\end{note}
If the substitution of template arguments into a \grammarterm{requirement}
Expand Down Expand Up @@ -3106,7 +3106,7 @@
\indextext{\idxcode{[]}|see{operator, subscripting}}%
A \defnadj{subscript}{expression} is a postfix expression
followed by square brackets containing
a possibly empty, comma-separated list of \grammarterm{initializer-clause}s
a possibly empty, comma-separated list of \grammarterm{initializer-clause}{s}
that constitute the arguments to the subscript operator.
The \grammarterm{postfix-expression} and
the initialization of the object parameter of
Expand Down Expand Up @@ -7611,7 +7611,7 @@

\pnum
During the evaluation of an expression $E$ as a core constant expression,
all \grammarterm{id-expression}s and uses of \tcode{*\keyword{this}}
all \grammarterm{id-expression}{s} and uses of \tcode{*\keyword{this}}
that refer to an object or reference
whose lifetime did not begin with the evaluation of $E$
are treated as referring to a specific instance of that object or reference
Expand Down
Loading