Skip to content

CWG Poll 3: P2096R2 Generalized wording for partial specializations #4368

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

Merged
merged 5 commits into from
Nov 26, 2020
Merged
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
2 changes: 1 addition & 1 deletion source/classes.tex
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
A class declaration where the \grammarterm{class-name}
in the \grammarterm{class-head-name} is a \grammarterm{simple-template-id}
shall be an explicit specialization\iref{temp.expl.spec} or
a partial specialization\iref{temp.class.spec}.
a partial specialization\iref{temp.spec.partial}.
A \grammarterm{class-specifier} whose
\grammarterm{class-head} omits the
\grammarterm{class-head-name} defines an unnamed class.
Expand Down
12 changes: 6 additions & 6 deletions source/declarations.tex
Original file line number Diff line number Diff line change
Expand Up @@ -7192,7 +7192,7 @@
namespace is implicitly inserted into the enclosing namespace as for an unnamed
namespace\iref{namespace.unnamed}. Furthermore, each
member of the inline namespace can subsequently be partially
specialized\iref{temp.class.spec}, explicitly
specialized\iref{temp.spec.partial}, explicitly
instantiated\iref{temp.explicit}, or explicitly specialized\iref{temp.expl.spec} as
though it were a member of the enclosing namespace. Finally, looking up a name in the
enclosing namespace via explicit qualification\iref{namespace.qual} will include
Expand Down Expand Up @@ -7893,7 +7893,7 @@
considered when a use of the name is made. Thus, additional
overloads added after the \grammarterm{using-declaration} are ignored, but
default function arguments\iref{dcl.fct.default}, default template
arguments\iref{temp.param}, and template specializations~(\ref{temp.class.spec},
arguments\iref{temp.param}, and template specializations~(\ref{temp.spec.partial},
\ref{temp.expl.spec}) are considered.
\end{note}
\begin{example}
Expand All @@ -7920,12 +7920,12 @@

\pnum
\begin{note}
Partial specializations of class templates are found by looking up the
primary class template and then considering all partial specializations
of that template. If a \grammarterm{using-declaration} names a class
Partial specializations of templates are found by looking up the
primary template and then considering all partial specializations
of that template. If a \grammarterm{using-declaration} names a
template, partial specializations introduced after the
\grammarterm{using-declaration} are effectively visible because the primary
template is visible\iref{temp.class.spec}.
template is visible\iref{temp.spec.partial}.
\end{note}

\pnum
Expand Down
24 changes: 23 additions & 1 deletion source/lex.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1045,8 +1045,10 @@
\nontermdef{integer-suffix}\br
unsigned-suffix \opt{long-suffix} \br
unsigned-suffix \opt{long-long-suffix} \br
unsigned-suffix \opt{size-suffix} \br
long-suffix \opt{unsigned-suffix} \br
long-long-suffix \opt{unsigned-suffix}
long-long-suffix \opt{unsigned-suffix} \br
size-suffix \opt{unsigned-suffix}
\end{bnf}

\begin{bnf}
Expand All @@ -1064,6 +1066,11 @@
\terminal{ll LL}
\end{bnf}

\begin{bnf}
\nontermdef{size-suffix} \textnormal{one of}\br
\terminal{z Z}
\end{bnf}

\pnum
\indextext{literal!\idxcode{unsigned}}%
\indextext{literal!\idxcode{long}}%
Expand Down Expand Up @@ -1177,6 +1184,21 @@
\tcode{unsigned long long int} &
\tcode{unsigned long long int}\\
and \tcode{ll} or \tcode{LL} &
&
\\\hline
\tcode{z} or \tcode{Z} &
the signed integer type corresponding &
the signed integer type \\
&
\qquad to \tcode{std::size_t}\iref{support.types.layout} &
\qquad corresponding to \tcode{std::size_t} \\
&
&
\tcode{std::size_t}\\\hline
Both \tcode{u} or \tcode{U} &
\tcode{std::size_t} &
\tcode{std::size_t} \\
and \tcode{z} or \tcode{Z} &
&
\\
\end{floattable}
Expand Down
1 change: 1 addition & 0 deletions source/preprocessor.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1793,6 +1793,7 @@
\defnxname{cpp_ref_qualifiers} & \tcode{200710L} \\ \rowsep
\defnxname{cpp_return_type_deduction} & \tcode{201304L} \\ \rowsep
\defnxname{cpp_rvalue_references} & \tcode{200610L} \\ \rowsep
\defnxname{cpp_size_t_suffix} & \tcode{202011L} \\ \rowsep
\defnxname{cpp_sized_deallocation} & \tcode{201309L} \\ \rowsep
\defnxname{cpp_static_assert} & \tcode{201411L} \\ \rowsep
\defnxname{cpp_structured_bindings} & \tcode{201606L} \\ \rowsep
Expand Down
Loading