diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/src/.gitignore b/src/.gitignore index 7ded3b8..0939d92 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -4,3 +4,5 @@ *.ind ts.* !ts.tex + +*DS_Store* diff --git a/src/basicconcepts.tex b/src/basicconcepts.tex index 3e10abf..2adaa10 100644 --- a/src/basicconcepts.tex +++ b/src/basicconcepts.tex @@ -58,4 +58,4 @@ \rSec0[conv]{Standard conversions} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. diff --git a/src/compatibility.tex b/src/compatibility.tex index c5d910b..19aeb72 100644 --- a/src/compatibility.tex +++ b/src/compatibility.tex @@ -29,5 +29,5 @@ \added{The \tcode{reflexpr} keyword is added to introduce meta-data through a \grammarterm{reflexpr-specifier}.} \effect Valid ISO \CppXIV{} code using \tcode{concept}\removed{ or}\added{,} \tcode{requires}\added{, or \tcode{reflexpr}} -as an identifier is not valid in this International Standard. +as an identifier is not valid in this document. \end{std.txt} diff --git a/src/config.tex b/src/config.tex index e6850e3..c7a354d 100644 --- a/src/config.tex +++ b/src/config.tex @@ -2,6 +2,7 @@ %%-------------------------------------------------- %% Version numbers \newcommand{\docno}{N4856} +\newcommand{\isodocno}{ISO/IEC 23619:2021(E)} \newcommand{\prevdocno}{N4818} \newcommand{\tsver}{201902} @@ -13,6 +14,6 @@ \newcommand{\reldate}{\today} % \newcommand{\reldate}{2018-04-04} -\newcommand{\copyrightyear}{2020} +\newcommand{\copyrightyear}{2021} %% Library chapters diff --git a/src/conformance.tex b/src/conformance.tex deleted file mode 100644 index bcea859..0000000 --- a/src/conformance.tex +++ /dev/null @@ -1,50 +0,0 @@ -%!TEX root = ts.tex - -\rSec0[intro]{General} - -\rSec1[conformance]{Conformance} - -\pnum - Conformance is specified in terms of behavior. Ideal behavior is not always implementable, so the conformance subclauses take that into account. - - -\rSec2[conformance.9945]{POSIX conformance} - -\pnum - Some behavior is specified by reference to POSIX. How such behavior is actually implemented is unspecified. - -\pnum - \begin{note} This constitutes an ``as if'' rule allowing implementations to call native operating system or other APIs. \end{note} - -\pnum -Implementations are encouraged to provide such behavior as it is defined by POSIX. Implementations shall document any behavior that differs from the behavior defined by POSIX. Implementations that do not support exact POSIX behavior are encouraged to provide behavior as close to POSIX behavior as is reasonable given the limitations of actual operating systems and file systems. If an implementation cannot provide any reasonable behavior, the implementation shall report an error as specified in Error Reporting~(\ref{err.report}). - -\pnum - \begin{note} This allows users to rely on an exception being thrown or an error code being set when an implementation cannot provide any reasonable behavior. \end{note} - -\pnum - Implementations are not required to provide behavior that is not supported by a particular operating system. - - - -\rSec2[conformance.conditional]{Conditionally-supported features} - -\pnum -This document defines conditionally-supported features, in the form of additional member functions on types that satisfy \tcode{Protocol}~(\ref{socket.reqmts.protocol}), \tcode{Endpoint}~(\ref{socket.reqmts.endpoint}), \tcode{SettableSocketOption}~(\ref{socket.reqmts.settablesocketoption}), \tcode{GettableSocketOption}~(\ref{socket.reqmts.gettablesocketoption}) or \tcode{IoControlCommand}~(\ref{socket.reqmts.iocontrolcommand}) requirements. - -\pnum - \begin{note} This is so that, when the additional member functions are available, \Cpp programs can extend the library to add support for other protocols and socket options. \end{note} - -\pnum -For the purposes of this document, implementations that provide all of the additional member functions are known as extensible implementations. - -\pnum - \begin{note} Implementations are encouraged to provide the additional member functions, where possible. It is intended that POSIX and Windows implementations will provide them. \end{note} - - -\rSec1[intro.ack]{Acknowledgments} - -\pnum -The design of this specification is based, in part, on the Asio library -written by Christopher Kohlhoff. - diff --git a/src/cover-wd.tex b/src/cover-wd.tex index bf1029f..16d8a2e 100644 --- a/src/cover-wd.tex +++ b/src/cover-wd.tex @@ -6,6 +6,7 @@ \thispagestyle{empty} \begingroup \def\hd{\begin{tabular}{ll} + \textbf{ISO Document:} & {\larger\isodocno} \\ \textbf{Document Number:} & {\larger\docno} \\ \textbf{Date:} & \reldate \\ \textbf{Revises:} & \prevdocno \\ diff --git a/src/declarations.tex b/src/declarations.tex index ab62c67..d93734f 100644 --- a/src/declarations.tex +++ b/src/declarations.tex @@ -105,7 +105,7 @@ Insert the following subclause: -\begin{std.txt}\color{addclr} +\begin{std.txt} \pnum The \grammarterm{reflexpr-specifier} yields a type \tcode{T} that allows diff --git a/src/declarators.tex b/src/declarators.tex index 066621f..5650890 100644 --- a/src/declarators.tex +++ b/src/declarators.tex @@ -15,20 +15,20 @@ \rSec0[class]{Classes} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. \rSec0[class.derived]{Derived classes} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. \rSec0[class.access]{Member access control} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. \rSec0[special]{Special member functions} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. \rSec0[over]{Overloading} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. diff --git a/src/definitions.tex b/src/definitions.tex index b09fd67..b9018b6 100644 --- a/src/definitions.tex +++ b/src/definitions.tex @@ -1,6 +1,6 @@ %!TEX root = ts.tex -\rSec1[intro.defs]{Terms and definitions} +\rSec0[defs]{Terms and definitions} \pnum \indextext{definitions|(}% @@ -8,6 +8,6 @@ terminological databases for use in standardization at the following addresses: \begin{itemize} - \item IEC Electropedia: available at \url{http://www.electropedia.org/} - \item ISO Online browsing platform: available at \url{http://www.iso.org/obp} + \item IEC Electropedia: available at http://www.electropedia.org/ + \item ISO Online browsing platform: available at http://www.iso.org/obp \end{itemize} diff --git a/src/expressions.tex b/src/expressions.tex index fac6e49..81d650b 100644 --- a/src/expressions.tex +++ b/src/expressions.tex @@ -77,4 +77,4 @@ \rSec0[stmt.stmt]{Statements} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. diff --git a/src/foreword.tex b/src/foreword.tex new file mode 100644 index 0000000..b247010 --- /dev/null +++ b/src/foreword.tex @@ -0,0 +1,16 @@ +%!TEX root = ts.tex + +\rSec0[foreword]{Foreword} + +ISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission) form the specialized system for worldwide standardization. National bodies that are members of ISO or IEC participate in the development of International Standards through technical committees established by the respective organization to deal with particular fields of technical activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other international organizations, governmental and non-governmental, in liaison with ISO and IEC, also take part in the work. + +The procedures used to develop this document and those intended for its further maintenance are described in the ISO/IEC Directives, Part 1. In particular the different approval criteria needed for the different types of document should be noted. This document was drafted in accordance with the editorial rules of the ISO/IEC Directives, Part 2 (see www.iso.org/directives). + +Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights. Details of any patent rights identified during the development of the document will be in the Introduction and/or on the ISO list of patent declarations received (see www.iso.org/patents) or the IEC list of patent declarations received (see http://patents.iec.ch). + +Any trade name used in this document is information given for the convenience of users and does not constitute an endorsement. + +For an explanation on the voluntary nature of standards, the meaning of ISO specific terms and expressions related to conformity assessment, as well as information about ISO’s adherence to the World Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT), see www.iso.org/iso/foreword.html. + +This document was prepared by Joint Technical Committee ISO/IEC JTC 1, \textit{Information technology}, Subcommittee SC 22, \textit{Programming languages, their environments and system software interfaces}. + diff --git a/src/front.tex b/src/front.tex index 117974d..250a9ad 100644 --- a/src/front.tex +++ b/src/front.tex @@ -10,6 +10,7 @@ %% within it (per ISO request) but do include a %% bookmark for it in the PDF. \phantomsection +\setcounter{page}{3} \pdfbookmark{\contentsname}{toctarget} \hypertarget{toctarget}{\tableofcontents*} diff --git a/src/general.tex b/src/general.tex index ecbc844..84535e7 100644 --- a/src/general.tex +++ b/src/general.tex @@ -1,22 +1,24 @@ %!TEX root = ts.tex -\rSec1[intro.compliance]{Implementation compliance} +\rSec0[general]{General} + +\rSec1[general.compliance]{Implementation compliance} \pnum -Conformance requirements for this specification are those defined in subclause -\ref{intro.compliance} in the C++ Standard. Similarly, all references to the C++ Standard in the +Conformance requirements for this document are those defined in subclause +\ref{general.compliance} in the C++ Standard. Similarly, all references to the C++ Standard in the resulting document shall be taken as referring to the resulting document itself. \begin{note} Conformance is defined in terms of the behavior of programs. \end{note} -\rSec1[intro.namespaces]{Namespaces and headers} +\rSec1[general.namespaces]{Namespaces and headers} \pnum Whenever a name \tcode{x} declared in subclause \ref{reflect} at namespace scope is mentioned, the name \tcode{x} is assumed to be fully qualified as \tcode{::std::experimental::reflect::v1::x}, unless otherwise specified. -The header described in this specification (see Table~\ref{tab:info.headers}) +The header described in this document (see Table~\ref{tab:info.headers}) shall import the contents of \tcode{::std::experimental::reflect::v1} into \tcode{::std::experimental::reflect} as if by: @@ -37,10 +39,10 @@ \tcode{} \\ \end{floattable} -\rSec1[intro.features]{Feature-testing recommendations} +\rSec1[general.features]{Feature-testing recommendations} \pnum -An implementation that provides support for this Technical Specification shall define each feature test macro defined in \tref{intro.features} if no associated headers are indicated for that macro, and if associated headers are indicated for a macro, that macro is defined after inclusion of one of the corresponding headers specified in the table. +An implementation that provides support for this document shall define each feature test macro defined in \tref{intro.features} if no associated headers are indicated for that macro, and if associated headers are indicated for a macro, that macro is defined after inclusion of one of the corresponding headers specified in the table. \begin{floattable}{Feature-test macros}{tab:intro.features} {lll} @@ -50,13 +52,3 @@ \tcode{__cpp_reflection} & \tcode{\tsver} & none \\ \tcode{__cpp_lib_reflection} & \tcode{\tsver} & \tcode{} \\ \end{floattable} - -\rSec1[intro.ack]{Acknowledgements} - -\pnum -This work is the result of a collaboration of researchers in industry and -academia. We wish to thank the original authors of this TS, Mat\'{u}\v{s} -Chochl\'{i}k, Axel Naumann, and David Sankel. We also wish to thank people who -made valuable contributions within and outside these groups, including Ricardo -Fabiano de Andrade, Roland Bock, Chandler Carruth, Jackie Kay, A. Joël Lamotte, -Jens Maurer, and many others not named here who contributed to the discussion. diff --git a/src/languagesupport.tex b/src/languagesupport.tex index 56cd064..0ca3a01 100644 --- a/src/languagesupport.tex +++ b/src/languagesupport.tex @@ -10,7 +10,7 @@ \rSec1[reflect]{Static reflection} \rSec2[reflect.general]{In general} -\begin{std.txt}\color{addclr} +\begin{std.txt} \pnum As laid out in \ref{dcl.type.reflexpr}, compile-time constant metadata, @@ -32,7 +32,7 @@ \rSec2[reflect.synopsis]{Header \tcode{} synopsis} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{codeblock} namespace std { namespace experimental { @@ -436,7 +436,7 @@ \rSec2[reflect.concepts]{Concepts for meta-object types} -\begin{std.txt}\color{addclr} +\begin{std.txt} \pnum The operations on meta-object types defined here require meta-object types to satisfy certain concepts (\cxxref{dcl.spec.concept}). These concepts are also used to @@ -448,7 +448,7 @@ \rSec3[reflect.concepts.object]{Concept \tcode{Object}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Object = @\seebelow@; @@ -462,7 +462,7 @@ \end{std.txt} \rSec3[reflect.concepts.objseq]{Concept \tcode{ObjectSequence}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool ObjectSequence = Object && @\seebelow@; @@ -477,7 +477,7 @@ \rSec3[reflect.concepts.tempparmscope]{Concept \tcode{TemplateParameterScope}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool TemplateParameterScope = Scope && @\seebelow@; @@ -492,7 +492,7 @@ \rSec3[reflect.concepts.named]{Concept \tcode{Named}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Named = Object && @\seebelow@; @@ -508,7 +508,7 @@ \rSec3[reflect.concepts.alias]{Concept \tcode{Alias}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Alias = Named && ScopeMember && @\seebelow@; @@ -552,7 +552,7 @@ \rSec3[reflect.concepts.recordmember]{Concept \tcode{RecordMember}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool RecordMember = ScopeMember && @\seebelow@; @@ -567,7 +567,7 @@ \rSec3[reflect.concepts.enumerator]{Concept \tcode{Enumerator}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Enumerator = Constant && @\seebelow@; @@ -582,7 +582,7 @@ \rSec3[reflect.concepts.variable]{Concept \tcode{Variable}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Variable = Typed && ScopeMember && @\seebelow@; @@ -597,7 +597,7 @@ \rSec3[reflect.concepts.scopemember]{Concept \tcode{ScopeMember}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool ScopeMember = Named && @\seebelow@; @@ -612,7 +612,7 @@ \rSec3[reflect.concepts.typed]{Concept \tcode{Typed}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Typed = Object && @\seebelow@; @@ -627,7 +627,7 @@ \rSec3[reflect.concepts.namespace]{Concept \tcode{Namespace}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Namespace = Named && Scope && @\seebelow@; @@ -642,7 +642,7 @@ \rSec3[reflect.concepts.globalscope]{Concept \tcode{GlobalScope}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool GlobalScope = Namespace && @\seebelow@; @@ -657,7 +657,7 @@ \rSec3[reflect.concepts.class]{Concept \tcode{Class}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Class = Record && @\seebelow@; @@ -672,7 +672,7 @@ \rSec3[reflect.concepts.enum]{Concept \tcode{Enum}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Enum = Type && Scope && ScopeMember && @\seebelow@; @@ -687,7 +687,7 @@ \rSec3[reflect.concepts.record]{Concept \tcode{Record}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Record = Type && Scope && ScopeMember && @\seebelow@; @@ -702,7 +702,7 @@ \rSec3[reflect.concepts.scope]{Concept \tcode{Scope}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Scope = Object && @\seebelow@; @@ -717,7 +717,7 @@ \rSec3[reflect.concepts.type]{Concept \tcode{Type}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Type = Named && @\seebelow@; @@ -735,7 +735,7 @@ \rSec3[reflect.concepts.const]{Concept \tcode{Constant}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Constant = Typed && ScopeMember && @\seebelow@; @@ -751,7 +751,7 @@ \rSec3[reflect.concepts.base]{Concept \tcode{Base}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Base = Object && @\seebelow@; @@ -765,7 +765,7 @@ \end{std.txt} \rSec3[reflect.concepts.fctparam]{Concept \tcode{FunctionParameter}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool FunctionParameter = Typed && ScopeMember && @\seebelow@; \end{itemdecl} @@ -778,7 +778,7 @@ \end{std.txt} \rSec3[reflect.concepts.callable]{Concept \tcode{Callable}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Callable = Scope && ScopeMember && @\seebelow@; \end{itemdecl} @@ -789,7 +789,7 @@ \end{std.txt} \rSec3[reflect.concepts.expr]{Concept \tcode{Expression}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Expression = Object && @\seebelow@; \end{itemdecl} @@ -801,7 +801,7 @@ \end{std.txt} \rSec3[reflect.concepts.expr.paren]{Concept \tcode{ParenthesizedExpression}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool ParenthesizedExpression = Expression && @\seebelow@; \end{itemdecl} @@ -813,7 +813,7 @@ \end{std.txt} \rSec3[reflect.concepts.expr.fctcall]{Concept \tcode{FunctionCallExpression}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool FunctionCallExpression = Expression && @\seebelow@; \end{itemdecl} @@ -825,7 +825,7 @@ \end{std.txt} \rSec3[reflect.concepts.expr.type.fctconv]{Concept \tcode{FunctionalTypeConversion}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool FunctionalTypeConversion = Expression && @\seebelow@; \end{itemdecl} @@ -837,7 +837,7 @@ \end{std.txt} \rSec3[reflect.concepts.fct]{Concept \tcode{Function}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Function = Typed && Callable && @\seebelow@; \end{itemdecl} @@ -848,7 +848,7 @@ \end{std.txt} \rSec3[reflect.concepts.memfct]{Concept \tcode{MemberFunction}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool MemberFunction = RecordMember && Function && @\seebelow@; \end{itemdecl} @@ -859,7 +859,7 @@ \end{std.txt} \rSec3[reflect.concepts.specialfct]{Concept \tcode{SpecialMemberFunction}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool SpecialMemberFunction = RecordMember && @\seebelow@; \end{itemdecl} @@ -871,7 +871,7 @@ \end{std.txt} \rSec3[reflect.concepts.ctor]{Concept \tcode{Constructor}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Constructor = Callable && RecordMember && @\seebelow@; \end{itemdecl} @@ -882,7 +882,7 @@ \end{std.txt} \rSec3[reflect.concepts.dtor]{Concept \tcode{Destructor}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Destructor = Callable && SpecialMemberFunction && @\seebelow@; @@ -894,7 +894,7 @@ \end{std.txt} \rSec3[reflect.concepts.oper]{Concept \tcode{Operator}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Operator = Function && @\seebelow@; \end{itemdecl} @@ -905,7 +905,7 @@ \end{std.txt} \rSec3[reflect.concepts.convfct]{Concept \tcode{ConversionOperator}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool ConversionOperator = MemberFunction && Operator && @\seebelow@; @@ -917,7 +917,7 @@ \end{std.txt} \rSec3[reflect.concepts.lambda]{Concept \tcode{Lambda}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool Lambda = Type && Scope && @\seebelow@; \end{itemdecl} @@ -928,7 +928,7 @@ \end{std.txt} \rSec3[reflect.concepts.lambdacapture]{Concept \tcode{LambdaCapture}} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template concept bool LambdaCapture = Variable && @\seebelow@; \end{itemdecl} @@ -940,7 +940,7 @@ \rSec2[reflect.ops]{Meta-object operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \pnum A meta-object operation extracts information from meta-object types. It is a class template taking one or more arguments, at least one of which models the \tcode{Object} concept. The result of a meta-object operation can be either a constant expression (\cxxref{expr.const}) or a type. @@ -955,7 +955,7 @@ Alias entities are not returned by meta-object operations (\ref{reflect.concepts.alias}). \pnum -If subsequent specializations of operations on the same reflected entity could give different constant expression results (for instance for \tcode{get_name_v} because the parameter's function is redeclared with a different parameter name between the two points of instantiation), the program is ill-formed, no diagnostic required. +Subsequent specializations of operations on the same reflected entity can give different constant expression results (for instance for \tcode{get_name_v} because the parameter's function is redeclared with a different parameter name between the two points of instantiation). In such cases, the program is ill-formed, and no diagnostic is required. \begin{example}\begin{codeblock} void func(int a); auto x1 = get_name_v>>; @@ -968,7 +968,7 @@ \rSec3[reflect.ops.object]{Object operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct reflects_same; @@ -1031,7 +1031,7 @@ \rSec3[reflect.ops.objseq]{ObjectSequence operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_size; @@ -1063,7 +1063,7 @@ \rSec3[reflect.ops.named]{Named operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_unnamed; @@ -1116,7 +1116,7 @@ namespace n { template class A; } using a_m = reflexpr(n::A); \end{codeblock} -the value of \tcode{get_name_v} is \tcode{"A"} while the value of \tcode{get_display_name_v} might be \tcode{"n::A"}. +the value of \tcode{get_name_v} is \tcode{"A"} while the value of \tcode{get_display_name_v} can be \tcode{"n::A"}. \end{note} \pnum @@ -1134,7 +1134,7 @@ \rSec3[reflect.ops.alias]{Alias operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_aliased; @@ -1168,7 +1168,7 @@ \rSec3[reflect.ops.type]{Type operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_type; @@ -1247,7 +1247,7 @@ \rSec3[reflect.ops.member]{Member operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \pnum A specialization of any of these templates with a meta-object type that is reflecting an incomplete type renders the program ill-formed. Such errors are @@ -1279,12 +1279,12 @@ \rSec3[reflect.ops.record]{Record operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \pnum A specialization of any of these templates with a meta-object type that is reflecting an incomplete type renders the program ill-formed. Such errors are not in the immediate context (\cxxref{temp.deduct}). -Members introduced by \grammarterm{using-declaration}{s} (\cxxref{namespace.udecl}) are included in the sequences below where applicable; the \tcode{Scope} of these members remains that of the declaration of the referenced entity. \begin{note} These members are not \tcode{Aliase}s, see \ref{reflect.ops}. A member injected into a derived class may have different access. \end{note} +Members introduced by \grammarterm{using-declaration}{s} (\cxxref{namespace.udecl}) are included in the sequences below where applicable; the \tcode{Scope} of these members remains that of the declaration of the referenced entity. \begin{note} These members are not \tcode{Aliase}s, see \ref{reflect.ops}. A member injected into a derived class can have different access. \end{note} \begin{itemdecl} template struct get_public_data_members; @@ -1418,7 +1418,7 @@ \rSec3[reflect.ops.enum]{Enum operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_scoped_enum; @@ -1464,7 +1464,7 @@ \rSec3[reflect.ops.value]{Value operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_constant; @@ -1512,7 +1512,7 @@ \rSec3[reflect.ops.derived]{Base operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_class; @@ -1538,7 +1538,7 @@ \rSec3[reflect.ops.namespace]{Namespace operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_inline; @@ -1552,7 +1552,7 @@ \end{std.txt} \rSec3[reflect.ops.fctparam]{FunctionParameter operations } -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct has_default_argument; \end{itemdecl} @@ -1573,7 +1573,7 @@ \rSec3[reflect.ops.callable]{Callable operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_parameters; \end{itemdecl} @@ -1612,7 +1612,7 @@ \end{std.txt} \rSec3[reflect.ops.expr.paren]{ParenthesizedExpression operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_subexpression; \end{itemdecl} @@ -1623,7 +1623,7 @@ \end{std.txt} \rSec3[reflect.ops.expr.fctcall]{FunctionCallExpression operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_callable; \end{itemdecl} @@ -1635,7 +1635,7 @@ \rSec3[reflect.ops.expr.fcttypeconv]{FunctionalTypeConversion operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_constructor; \end{itemdecl} @@ -1647,7 +1647,7 @@ \end{std.txt} \rSec3[reflect.ops.fct]{Function operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_pointer; \end{itemdecl} @@ -1662,7 +1662,7 @@ \end{std.txt} \rSec3[reflect.ops.memfct]{MemberFunction operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_static; template struct is_const; @@ -1694,7 +1694,7 @@ \rSec3[reflect.ops.specialfct]{SpecialMemberFunction operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_implicitly_declared; template struct is_defaulted; @@ -1712,7 +1712,7 @@ \end{std.txt} \rSec3[reflect.ops.ctor]{Constructor operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_explicit; \end{itemdecl} @@ -1728,7 +1728,7 @@ \rSec3[reflect.ops.dtor]{Destructor operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_virtual; template struct is_pure_virtual; @@ -1746,7 +1746,7 @@ \rSec3[reflect.ops.convfct]{ConversionOperator operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_explicit; \end{itemdecl} @@ -1762,7 +1762,7 @@ \rSec3[reflect.ops.lambda]{Lambda operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct get_captures; \end{itemdecl} @@ -1808,7 +1808,7 @@ \rSec3[reflect.ops.lambdacapture]{LambdaCapture operations} -\begin{std.txt}\color{addclr} +\begin{std.txt} \begin{itemdecl} template struct is_explicitly_captured; \end{itemdecl} diff --git a/src/macros.tex b/src/macros.tex index 711793f..93450d8 100644 --- a/src/macros.tex +++ b/src/macros.tex @@ -3,12 +3,8 @@ %%-------------------------------------------------- %% Difference markups -\definecolor{addclr}{rgb}{0,.6,.6} -\definecolor{remclr}{rgb}{1,0,0} -\definecolor{noteclr}{rgb}{0,0,1} - -\renewcommand{\added}[1]{\textcolor{addclr}{\uline{#1}}} -\newcommand{\removed}[1]{\textcolor{remclr}{\sout{#1}}} +\renewcommand{\added}[1]{\uline{#1}} +\newcommand{\removed}[1]{\sout{#1}} \renewcommand{\changed}[2]{\removed{#1}\added{#2}} \newcommand{\nbc}[1]{[#1]\ } @@ -17,19 +13,17 @@ \newcommand{\changednb}[3]{\removednb{#1}{#2}\added{#3}} \newcommand{\remitem}[1]{\item\removed{#1}} -\newcommand{\ednote}[1]{\textcolor{noteclr}{[Editor's note: #1] }} +\newcommand{\ednote}[1]{[Editor's note: #1]} % \newcommand{\ednote}[1]{} \newenvironment{addedblock} { -\color{addclr} } { \color{black} } \newenvironment{removedblock} { -\color{remclr} } { \color{black} diff --git a/src/preface.tex b/src/preface.tex index a18b0ec..fb83d50 100644 --- a/src/preface.tex +++ b/src/preface.tex @@ -52,6 +52,4 @@ \chapter{Foreword} in the Technical Barriers to Trade (TBT) see the following URL: \href{http://www.iso.org/iso/foreword.html}{\tcode{www.iso.org/iso/foreword.html}}. -This document was prepared by -Technical Committee ISO/IEC JTC 1, \textit{Information technology}, -Subcommittee SC 22, \textit{Programming languages, their environments and system software interfaces}. +This document was prepared by Technical Committee ISO/IEC JTC 1, \textit{Information technology}, Subcommittee SC 22, \textit{Programming languages, their environments and system software interfaces}. diff --git a/src/references.tex b/src/references.tex index 61427d9..6ccb932 100644 --- a/src/references.tex +++ b/src/references.tex @@ -1,6 +1,6 @@ %!TEX root = ts.tex -\rSec1[intro.refs]{Normative references} +\rSec0[refs]{Normative references} \pnum The following referenced documents are indispensable for the application of this @@ -19,6 +19,5 @@ \pnum The numbering of clauses, subclauses, and paragraphs in this document reflects -the numbering in the C++ Standard as modified by the Concepts-TS. References to clauses and subclauses not -appearing in this document refer to the original unmodified text +the numbering in the C++ Standard as modified by the Concepts-TS. References to clauses and subclauses not appearing in this document refer to the original unmodified text in the C++ Standard. diff --git a/src/intro.tex b/src/scope.tex similarity index 79% rename from src/intro.tex rename to src/scope.tex index 0105e1b..eb6720a 100644 --- a/src/intro.tex +++ b/src/scope.tex @@ -1,19 +1,17 @@ %!TEX root = ts.tex -\rSec0[intro]{General} - -\rSec1[intro.scope]{Scope} +\rSec0[scope]{Scope} \pnum This document describes extensions to the \Cpp Programming -Language (Clause \ref{intro.refs}) that enable operations on source code. These +Language (Clause \ref{refs}) that enable operations on source code. These extensions include new syntactic forms and modifications to existing language semantics, as well as changes and additions to the existing library facilities. \pnum The International Standard, ISO/IEC 14882, together with the C++ Extensions for Concepts, ISO/IEC TS 19217:2015 provide important context and specification for -this document. This document is written as a set of changes against the +this document. This document is written as a set of changes against the specification of ISO/IEC 14882, as modified by C++ Extensions for Concepts, ISO/IEC TS 19217:2015. Instructions to modify or add paragraphs are written as explicit instructions. Modifications made directly to existing text from the diff --git a/src/styles.tex b/src/styles.tex index 7571c71..b58708a 100644 --- a/src/styles.tex +++ b/src/styles.tex @@ -21,8 +21,8 @@ %% create page styles \makepagestyle{cpppage} -\makeevenhead{cpppage}{\textbf{\docno}}{}{} -\makeoddhead{cpppage}{\textbf{\docno}}{}{} +\makeevenhead{cpppage}{}{\textbf{\isodocno}}{} +\makeoddhead{cpppage}{}{\textbf{\isodocno}}{} \makeevenfoot{cpppage}{\leftmark}{\copyright\,ISO/IEC {\copyrightyear} -- All rights reserved}{\thepage} \makeoddfoot{cpppage}{\leftmark}{\copyright\,ISO/IEC {\copyrightyear} -- All rights reserved}{\thepage} diff --git a/src/templates.tex b/src/templates.tex index 9c4b983..b75f01f 100644 --- a/src/templates.tex +++ b/src/templates.tex @@ -35,8 +35,8 @@ \rSec0[except]{Exception handling} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. \rSec0[cpp]{Preprocessing directives} -No changes are made to Clause \the\value{chapter} of the \Cpp Standard. +ISO/IEC 14882:2020, Clause \the\value{chapter} applies. diff --git a/src/ts.tex b/src/ts.tex index 128eec0..60e614d 100644 --- a/src/ts.tex +++ b/src/ts.tex @@ -41,7 +41,7 @@ pdfstartview=FitH, linktocpage=true, colorlinks=true, - linkcolor=blue, + linkcolor=black, plainpages=false ]{hyperref} \usepackage{memhfixc} % fix interactions between hyperref and memoir @@ -112,7 +112,8 @@ \mainmatter \setglobalstyles -\include{intro} +\include{foreword} +\include{scope} \include{references} \include{definitions} \include{general}