|
Boost-Commit : |
From: dgregor_at_[hidden]
Date: 2008-06-10 18:06:33
Author: dgregor
Date: 2008-06-10 18:06:32 EDT (Tue, 10 Jun 2008)
New Revision: 46309
URL: http://svn.boost.org/trac/boost/changeset/46309
Log:
Set up for next draft
Text files modified:
sandbox/committee/concepts/wording/Makefile | 35 +-
sandbox/committee/concepts/wording/wording.tex | 412 +++++++++++++++++----------------------
2 files changed, 198 insertions(+), 249 deletions(-)
Modified: sandbox/committee/concepts/wording/Makefile
==============================================================================
--- sandbox/committee/concepts/wording/Makefile (original)
+++ sandbox/committee/concepts/wording/Makefile 2008-06-10 18:06:32 EDT (Tue, 10 Jun 2008)
@@ -7,23 +7,24 @@
final:
@$(PDFLATEX) wording.tex
- @if ( grep 'LaTeX Warning: Label(s) may' wording.log > /dev/null ); \
- then $(PDFLATEX) wording.tex ; else :; fi
- @ if ( grep 'Writing index file' wording.log > /dev/null ); \
- then makeindex wording.tex ; $(PDFLATEX) wording.tex ; fi
- @-if ( grep 'LaTeX Warning: Citation' wording.log > /dev/null ); then \
- bibtex wording ; \
- $(PDFLATEX) wording.tex ; \
- fi
- @if ( grep 'LaTeX Warning: Label(s) may' wording.log > /dev/null || \
- grep 'LaTeX Warning: Citation' wording.log > /dev/null); \
- then $(PDFLATEX) wording.tex ; else :; fi
- @if ( grep 'LaTeX Warning: Label(s) may' wording.log > /dev/null || \
- grep 'LaTeX Warning: Citation' wording.log > /dev/null); \
- then $(PDFLATEX) wording.tex ; else :; fi
- @if ( grep 'LaTeX Warning: Label(s) may' wording.log > /dev/null || \
- grep 'LaTeX Warning: Citation' wording.log > /dev/null); \
- then $(PDFLATEX) wording.tex ; else :; fi
+
+# @if ( grep 'LaTeX Warning: Label(s) may' wording.log > /dev/null ); \
+# then $(PDFLATEX) wording.tex ; else :; fi
+# @ if ( grep 'Writing index file' wording.log > /dev/null ); \
+# then makeindex wording.tex ; $(PDFLATEX) wording.tex ; fi
+# @-if ( grep 'LaTeX Warning: Citation' wording.log > /dev/null ); then \
+# bibtex wording ; \
+# $(PDFLATEX) wording.tex ; \
+# fi
+# @if ( grep 'LaTeX Warning: Label(s) may' wording.log > /dev/null || \
+# grep 'LaTeX Warning: Citation' wording.log > /dev/null); \
+# then $(PDFLATEX) wording.tex ; else :; fi
+# @if ( grep 'LaTeX Warning: Label(s) may' wording.log > /dev/null || \
+# grep 'LaTeX Warning: Citation' wording.log > /dev/null); \
+# then $(PDFLATEX) wording.tex ; else :; fi
+# @if ( grep 'LaTeX Warning: Label(s) may' wording.log > /dev/null || \
+# grep 'LaTeX Warning: Citation' wording.log > /dev/null); \
+# then $(PDFLATEX) wording.tex ; else :; fi
#
# Standard rules
Modified: sandbox/committee/concepts/wording/wording.tex
==============================================================================
--- sandbox/committee/concepts/wording/wording.tex (original)
+++ sandbox/committee/concepts/wording/wording.tex 2008-06-10 18:06:32 EDT (Tue, 10 Jun 2008)
@@ -170,7 +170,7 @@
\mbox{\textit{cv}}-qualifiers (if any) and the
\techterm{ref-qualifier} (if any) on the function or function
template itself.
-\addedCC{If a function or function template is a concept map member its
+\removedCCC{If a function or function template is a concept map member its
signature additionally includes its status as a requirement member or a
satisfier member.}
The signature of a function template additionally
@@ -374,7 +374,7 @@
\addedConcepts{\mbox{\exitexample}}
\pnum
-\addedCC{\mbox{\enternote} Function names can be found within the
+\addedConcepts{\mbox{\enternote} Function names can be found within the
concept map archetypes ([temp.archetype]) corresponding to a
template's requirements. \mbox{\enterexample}}
\begin{codeblock}
@@ -389,7 +389,7 @@
g( x ); // error: no overload of g takes T' values.
}
\end{codeblock}
-\addedCC{\mbox{\exitexample}\mbox{\exitnote}}
+\addedConcepts{\mbox{\exitexample}\mbox{\exitnote}}
\color{black}
@@ -566,7 +566,7 @@
find any associated type names, qualified name lookup
(\mbox{\ref{basic.lookup.qual}}) can still find the name within the
archetype (\mbox{\ref{temp.archetype}}) of \mbox{\tcode{T}}}
-\addedCC{when the name lookup is performed in a constrained context
+\addedConcepts{when the name lookup is performed in a constrained context
(\mbox{\ref{temp.constrained}}).}
\color{black}
@@ -586,15 +586,15 @@
the name specified after the
\mbox{\techterm{nested-name-specifier}}\
is looked up in the scope of the concept map (\mbox{\ref{basic.scope.concept}}) or
-any of the concept maps for concept}\changedCCC{s}{ instances}
-\addedConcepts{its concept} \addedCC{instance} \addedConcepts{refines
+any of the concept maps for concept instances
+its concept instance refines
(\mbox{\ref{concept.member.lookup}}).}
-\addedCC{Concept map lookup (\mbox{\ref{temp.req.sat}}) determines
+\addedConcepts{Concept map lookup (\mbox{\ref{temp.req.sat}}) determines
which concept map the \mbox{\techterm{nested-name-specifier}} refers to.}
-\addedConcepts{The name shall represent} \changedCCC{a member}{one or
- more members} \addedConcepts{of that
- concept map} \addedCC{or the concept maps corresponding to the concept refinements}
- \addedCC{ \mbox{\enternote} Outside of a constrained context, this means
+\addedConcepts{The name shall represent one or
+ more members of that
+ concept map or the concept maps corresponding to the concept refinements.
+ \mbox{\enternote} Outside of a constrained context, this means
that one or more
requirement members (\mbox{\ref{concept.map}}) will be found, and since
those names are synonyms for sets of other names, the result of
@@ -625,7 +625,7 @@
\pnum
\addedConcepts{A concept map member name hidden by a name in a nested
declarative region}
-\addedCC{or by the name of a refining concept member}
+\addedConcepts{or by the name of a refining concept member}
\addedConcepts{can still be found
if qualified by the name of its concept map followed by the
\mbox{\tcode{::}}
@@ -642,8 +642,6 @@
in a class-scope typedef declaration such that the class or enumeration
has the typedef name for linkage purposes (\ref{dcl.typedef}), has external
linkage if the name of the class has external linkage.
-\removedCCC{An associated function definition
- (\mbox{\ref{concept.map.fct}}) has external linkage.}
\end{paras}
\setcounter{section}{8}
@@ -838,9 +836,8 @@
\pnum
\addedConcepts{In a constrained context
(\mbox{\ref{temp.constrained}}), a late-checked block treats the
- enclosed statements as if they were}
-\changedCCC{not in a constrained}{in an unconstrained}
-\addedConcepts{context. Outside of a constrained context, the late-checked block
+ enclosed statements as if they were in an unconstrained
+context. Outside of a constrained context, the late-checked block
has no effect. \mbox{\enternote} in a late-checked block, template
parameters do not behave as if they were replaced with their
corresponding archetypes. Thus, template parameters imply the
@@ -1158,9 +1155,7 @@
\addedConcepts{In a constrained template (\mbox{\ref{temp.constrained}}), a
pointer to member shall only point to a type archetype \mbox{\techterm{cv}
\tcode{T}} if the template has a concept
- requirement}
-\changedCCC{\mbox{\tcode{ReferentType<T>}}}{\mbox{\tcode{MemberPointeeType<T>}}}
-\addedConcepts{.}
+ requirement \mbox{\tcode{MemberPointeeType<T>}}.}
% San Jose motion \#4
\enternote\
see also \ref{expr.unary} and \ref{expr.mptr.oper}.
@@ -1326,7 +1321,7 @@
\tcode{inline}
\tcode{public}
member of its class.
-\removedCC{For a union-like class that has a variant member with a
+\removedConcepts{For a union-like class that has a variant member with a
non-trivial default constructor, an implicitly-declared default
constructor is defined as deleted (\mbox{\ref{dcl.fct.def}}).}
A default constructor is
@@ -1346,7 +1341,7 @@
\addedConcepts{An implicitly-declared default constructor for class
\mbox{\tcode{X}} is deleted if:}
\begin{itemize}
-\additemCC{\mbox{\tcode{X}} is a union-like class that has a variant
+\additemConcepts{\mbox{\tcode{X}} is a union-like class that has a variant
member with a non-trivial default constructor,}
\additemConcepts{any non-static data member is of reference type,}
\additemConcepts{any non-static data member of const-qualified type (or array
@@ -1486,7 +1481,7 @@
\tcode{inline}
\tcode{public}
member of its class.
-\removedCC{If the class is a union-like class that has a variant
+\removedConcepts{If the class is a union-like class that has a variant
member with a non-trivial destructor, an implicitly-declared
destructor is defined as delected (\mbox{\ref{dcl.fct.def}}).}
A destructor is
@@ -1503,7 +1498,7 @@
\addedConcepts{An implicitly-declared destructor for a class
\mbox{\tcode{X}} is deleted if:}
\begin{itemize}
-\additemCC{\mbox{\tcode{X}} is a union-like class that has a variant
+\additemConcepts{\mbox{\tcode{X}} is a union-like class that has a variant
member with a non-trivial destructor,}
\additemConcepts{any of the non-static data members has class type
\mbox{\tcode{M}} (or array thereof) and
@@ -1521,18 +1516,18 @@
\techterm{defined}\
when it is used to destroy an object of its class type (\ref{basic.stc}).
A program is ill-formed
-\changedCC{if the class for which a destructor is implicitly
+\changedConcepts{if the class for which a destructor is implicitly
defined has:}{if the implicitly-defined}
-\changedCZ{constructor}{destructor}
-\addedCC{is explicitly
+\changedCC{constructor}{destructor}
+\addedConcepts{is explicitly
defaulted, but the corresponding implicit declaration would have been deleted.}
\begin{itemize}
\item
-\removedCC{a non-static data member of class type (or array thereof) with an
+\removedConcepts{a non-static data member of class type (or array thereof) with an
inaccessible destructor, or}
\item
-\removedCC{a base class with an inaccessible destructor.}
+\removedConcepts{a base class with an inaccessible destructor.}
\end{itemize}
Before the implicitly-declared destructor for a class is implicitly defined,
@@ -1551,7 +1546,7 @@
\index{copy~constructor!implicitly-declared}%
If the class definition does not explicitly declare a copy constructor,
one is declared
-\techterm{implicitly}. \removedCC{If the class is a union-like class
+\techterm{implicitly}. \removedConcepts{If the class is a union-like class
that has a variant member with a non-trivial copy constructor, an
implicitly-declared copy constructor is defined as deleted
(\mbox{\ref{dcl.fct.def}}).}
@@ -1636,7 +1631,7 @@
\addedConcepts{An implicitly-declared copy constructor for a class
\mbox{\tcode{X}} is deleted if \mbox{\tcode{X}} has:}
\begin{itemize}
-\additemCC{a variant member with a non-trivial copy constructor and
+\additemConcepts{a variant member with a non-trivial copy constructor and
\mbox{\tcode{X}} is a union-like class,}
\additemConcepts{a non-static data member of class type
\mbox{\tcode{M}} (or array thereof) that cannot be copied because
@@ -1698,7 +1693,7 @@
If the class definition does not explicitly declare a copy assignment operator,
one is declared
\techterm{implicitly}.
-\removedCC{If the class is
+\removedConcepts{If the class is
a union-like class that has a variant member with a non-trivial copy
assignment operator, an implicitly-declared copy
assignment operator is defined as deleted (\mbox{\ref{dcl.fct.def}}).}
@@ -1770,7 +1765,7 @@
\addedConcepts{An implicitly-declared copy assignment operator for
class \mbox{\tcode{X}} is deleted if \mbox{\tcode{X}} has:}
\begin{itemize}
-\additemCC{a variant member with a non-trivial copy constructor and
+\additemConcepts{a variant member with a non-trivial copy constructor and
\mbox{\tcode{X}} is a union-like class,}
\additemConcepts{a non-static data member of \mbox{\tcode{const}} non-class
type (or array thereof), or}
@@ -1816,7 +1811,7 @@
\index{restriction!copy assignment~operator}%
A program is ill-formed \changedConcepts{if the class for which a copy assignment operator
is implicitly defined has:}{if the implicitly-defined copy}
-\changedCZ{constructor}{assignment operator}
+\changedCC{constructor}{assignment operator}
\addedConcepts{is explicitly defaulted, but the corresponding implicit
declaration would have been deleted.}
@@ -1853,7 +1848,7 @@
constructor template are
\begin{itemize}
\item the template parameter list (\ref{temp.param}), if any,
-\additemCC{the template requirements (\mbox{\ref{temp.req}}), if any,}
+\additemConcepts{the template requirements (\mbox{\ref{temp.req}}), if any,}
\item the \techterm{parameter-type-list} (\ref{decl.fct}),
\item the \techterm{exception-specification} (\ref{except.spec}),
\item absence or presence of \tcode{explicit} (\ref{class.conv.ctor}), and
@@ -1942,7 +1937,7 @@
the set of candidate functions and the argument list submitted to
overload resolution in each of the seven contexts in which
overload resolution is used.
-\addedCC{\mbox{\enternote} With concepts (\mbox{\ref{concept}}) and
+\addedConcepts{\mbox{\enternote} With concepts (\mbox{\ref{concept}}) and
constrained templates, the set of candidate functions can be
determined by an associated function candidate set or a retained
candidate set (\mbox{\ref{temp.constrained.set}}). \mbox{\exitnote}}
@@ -1997,7 +1992,7 @@
\pnum
\index{function~call~operator!overloaded}%
\addedConcepts{If declared in a concept}
-\addedCC{or concept map}\addedConcepts{, \mbox{\tcode{operator()}}
+\addedConcepts{or concept map}\addedConcepts{, \mbox{\tcode{operator()}}
shall be a non-member associated function with one or more parameters.}
\addedConcepts{It implements the function call syntax}
@@ -2058,7 +2053,7 @@
\pnum
\addedConcepts{If declared in a concept}
-\addedCC{or concept map}\addedConcepts{, \mbox{\tcode{operator[]}}
+\addedConcepts{or concept map}\addedConcepts{, \mbox{\tcode{operator[]}}
shall be a non-member associated function with exactly two parameters.
It implements the subscripting syntax}
@@ -2111,7 +2106,7 @@
\pnum
\index{member~access~~operator!overloaded}%
\addedConcepts{If declared in a concept}
-\addedCC{or concept map}\addedConcepts{,
+\addedConcepts{or concept map}\addedConcepts{,
\mbox{\tcode{operator->}}
shall be a non member associated function taking exactly one parameter.
It implements class member access using
@@ -2145,7 +2140,7 @@
These candidate
functions participate in the operator overload resolution process as
described in \ref{over.match.oper} and are used for no other purpose.
-\addedCC{No built-in operators are defined for archetypes
+\addedConcepts{No built-in operators are defined for archetypes
(\mbox{\ref{temp.archetype}}), even though
template requirements naming compiler-supported concepts
(\mbox{\ref{concept.support}}) can classify archetypes as non-class
@@ -2418,7 +2413,7 @@
\setcounter{Paras}{9}
\pnum
-\addedCC{A member template of a constrained class template is itself a
+\addedConcepts{A member template of a constrained class template is itself a
constrained template
(\mbox{\ref{temp.constrained}}). \mbox{\enternote} The template
requirements of the member template are the template requirements of
@@ -2670,8 +2665,8 @@
\techterm{equivalent}\
if they are equivalent except that one or more
expressions
-that involve template parameters in the return types\addedCC{,} \removedCC{and} parameter
-lists\addedCC{, and template requirements (if any)} are functionally equivalent using the rules described above to
+that involve template parameters in the return types\addedConcepts{,} \removedConcepts{and} parameter
+lists\addedConcepts{, and template requirements (if any)} are functionally equivalent using the rules described above to
compare expressions involving
template parameters.
If a program contains declarations of function templates that are
@@ -2961,12 +2956,12 @@
\pnum
When a \techterm{qualified-id} is intended to refer to a type that is not a member of the current instantiation (14.6.2.1) and its
\techterm{nested-name-specifier}
-\addedCC{is not a concept instance (\mbox{\ref{concept}}) and}
+\addedConcepts{is not a concept instance (\mbox{\ref{concept}}) and}
depends on a \techterm{template-parameter} (14.6.2), it shall be prefixed by the keyword \tcode{typename}, forming a
\techterm{typename-specifier}. If the \techterm{qualified-id} in a
\techterm{typename-specifier} does not denote a type, the program is
ill-formed.
-\addedCC{When the \mbox{\techterm{nested-name-specifier}} refers to a
+\addedConcepts{When the \mbox{\techterm{nested-name-specifier}} refers to a
concept instance, name lookup into the corresponding concept
determines whether the \mbox{\techterm{qualified-id}} refers to a
type or a value.}
@@ -2980,10 +2975,9 @@
\pnum
\addedConcepts{
\mbox{\enternote}\ if a template contains template requirements, name
-lookup of non-dependent names in}
-\changedCC{the template definition}{its constrained contexts
- (\mbox{\ref{temp.constrained}})}
-\addedConcepts{can find the
+lookup of non-dependent names in its constrained contexts
+ (\mbox{\ref{temp.constrained}})
+can find the
names of associated functions in the
requirements scope (\mbox{\ref{basic.scope.req}}). \mbox{\exitnote}}
@@ -3277,15 +3271,13 @@
\addedConcepts{Attempting to use a type in a
\mbox{\techterm{nested-name-specifier}} of a
\mbox{\techterm{qualified-id}} that refers to a member in a concept
- instance, for which} \changedCC{there is no}{concept map lookup
- (\mbox{\ref{temp.req.sat}}) does not find a}
-\addedConcepts{concept map corresponding to that
+ instance, for which concept map lookup
+ (\mbox{\ref{temp.req.sat}}) does not find a
+ concept map corresponding to that
concept instance.}
\additemConcepts{Attempting to use a class or function template with
- template arguments that}
-\changedCCC{do not}{are not used to}
-\addedConcepts{satisfy the template
+ template arguments that are not used to satisfy the template
requirements. \mbox{\enterexample}}
\color{addclr}
\begin{codeblock}
@@ -3308,11 +3300,10 @@
fails.}
\item
\addedConcepts{If a concept requirement appears (directly or indirectly)
-multiple times in the requirements of the template,}
-\changedCCC{the program is ill-formed}{and}
-\addedConcepts{if the concept maps (\mbox{\ref{concept.map}}) used to satisfy the multiple
+multiple times in the requirements of the template, and
+if the concept maps (\mbox{\ref{concept.map}}) used to satisfy the multiple
occurrences of the concept requirement are not the same concept map}
-\addedCC{or are different from the concept map that would be
+\addedConcepts{or are different from the concept map that would be
determined by concept map lookup
(\mbox{\ref{temp.req.sat}}), type deduction fails}\addedConcepts{. \mbox{\enterexample}}
\color{addclr}
@@ -3383,7 +3374,7 @@
type \mbox{\tcode{int}}. \mbox{\exitexample}}
\pnum
-\addedCC{A concept is a \mbox{\techterm{constrained template}}
+\addedConcepts{A concept is a \mbox{\techterm{constrained template}}
(\mbox{\ref{temp.constrained}}). The template requirements for the
concept consist of a concept requirement for the concept's concept
instance (\mbox{\ref{temp.req}}) and the template requirements
@@ -3443,9 +3434,7 @@
associated requirements (\mbox{\ref{concept.req}}), and axioms
(\mbox{\ref{concept.req}}). A name \mbox{\tcode{x}} declared in the body of a
concept shall refer to only one of: an associated type, an associated
-template, an axiom,}
-\mbox{\removedCCC{the name of the concept,}}
-\addedConcepts{or one or more associated
+template, an axiom, or one or more associated
functions that have been overloaded (clause~\mbox{\ref{over}}).}
\rSec3[concept.fct]{Associated functions}
@@ -3453,16 +3442,12 @@
\pnum
\addedConcepts{Associated functions describe functions, member functions, or
operators}
-\addedCC{(including templates thereof)}
+\addedConcepts{(including templates thereof)}
\addedConcepts{that specify the functional behavior of the concept
arguments and associated types and templates (\mbox{\ref{concept.assoc}}). A
concept map
-(\mbox{\ref{concept.map}}) for a given concept must}\changedCCC{provide, either
-implicitly (\mbox{\ref{concept.map}}) or explicitly
-(\mbox{\ref{concept.map.fct}}), definitions for}{satisfy}
-\addedConcepts{each associated
-function in the concept} \addedCC{(\mbox{\ref{concept.map.fct}})}
-\addedConcepts{.}
+(\mbox{\ref{concept.map}}) for a given concept must satisfy
+each associated function in the concept (\mbox{\ref{concept.map.fct}}).}
\begin{bnf}
\addedConcepts{associated-function:}\br
@@ -3480,8 +3465,7 @@
member function template.}
%
\addedConcepts{An associated function shall not be
- \mbox{\tcode{extern}}}\removedCCC{ or \mbox{\tcode{static}}
-(\mbox{\ref{dcl.stc}})}\addedConcepts{, inline}
+ \mbox{\tcode{extern}}, inline}
\addedZ{or \mbox{\tcode{virtual}}}
\addedConcepts{(\mbox{\ref{dcl.fct.spec}}), explicitly-defaulted or deleted
(\mbox{\ref{dcl.fct.def}}), or a friend function (\mbox{\ref{class.friend}}). An
@@ -3577,12 +3561,8 @@
\pnum
\addedConcepts{Associated functions may have a default implementation. This
-implementation will be instantiated when} \changedCCC{implicit definition of an
-implementation (\mbox{\ref{concept.map}}) for}{needed to
-satisfy}
-\addedConcepts{the associated function}
-\addedCC{requirement}
-\addedConcepts{(\mbox{\ref{concept.map.fct}})}\removedCCC{ fails}\addedConcepts{. A default implementation of an
+implementation will be instantiated when needed to
+satisfy the associated function requirement (\mbox{\ref{concept.map.fct}}). A default implementation of an
associated function is a constrained template
(\mbox{\ref{temp.constrained}}). \mbox{\enterexample}}
\begin{codeblock}
@@ -3617,15 +3597,14 @@
\end{codeblock}\addedConcepts{\mbox{\exitexample}}
\pnum
-\addedCC{An associated template specifies a template in a concept
+\addedConcepts{An associated template specifies a template in a concept
map. \mbox{\enterexample}}
-\color{ccadd}
\begin{codeblock}
concept C<typename T> {
template<ObjectType U> class X;
}
\end{codeblock}
-\addedCC{\mbox{\exitexample}}
+\addedConcepts{\mbox{\exitexample}}
\color{addclr}
\pnum
@@ -3845,14 +3824,9 @@
\addedConcepts{Concept maps describe how a set of template arguments satisfy the
requirements stated in the body of a concept definition
(\mbox{\ref{concept.def}}). Whenever a constrained template specialization
-(\mbox{\ref{temp.constrained}}) is named, there shall be a concept map}
-\changedCCC{corresponding to}{that satisfies}
-\addedConcepts{each concept requirement in the
+(\mbox{\ref{temp.constrained}}) is named, there shall be a concept map that
+satisfies each concept requirement in the
template requirements (\mbox{\ref{temp.req.sat}}).}
-\removedCCC{This concept map may be written
-explicitly (\mbox{\ref{concept.map}}), instantiated from a concept map
-template (\mbox{\ref{temp.concept.map}}), or generated implicitly
-(\mbox{\ref{concept.map}}).}
%
\addedConcepts{The concept map is inserted into the scope in
which the concept map or concept map template (\mbox{\ref{temp.concept.map}})
@@ -3886,14 +3860,14 @@
\addedConcepts{\mbox{\exitexample}}
\pnum
-\addedCC{
+\addedConcepts{
A concept map that is not a concept map archetype
may contain two kinds of members:
\mbox{\techterm{requirement members}} and \mbox{\techterm{satisfier
members}}.}
\pnum
-\addedCC{
+\addedConcepts{
A requirement member represents a requirement to satisfy (as
described below) a single associated function
(\mbox{\ref{concept.fct}}), associated type or associated template
@@ -3907,21 +3881,21 @@
}
\pnum
-\addedCC{
+\addedConcepts{
The \mbox{\techterm{concept-map-member-specification}}
in a \mbox{\techterm{concept-map-definition}} declares the full set of
satisfier members of the concept map; no satisfier member can be added
elsewhere.}
\pnum
-\addedCC{
+\addedConcepts{
After a requirement is satisfied, the requirement member serves as a
synonym for the set of entities (possibly satisfier members) that
satisfies the requirement. Each requirement member is visible during
qualified name lookup (\mbox{\ref{concept.qual}}).}
\pnum
-\addedCC{
+\addedConcepts{
A satisfier member shall satisfy
(\mbox{\ref{iconcept.map.fct}}, \mbox{\ref{iconcept.map.assoc}}) at
least one requirement member of its enclosing concept map or at least
@@ -3930,7 +3904,7 @@
(\mbox{\ref{basic.lookup}}). }
\pnum
-\addedCC{
+\addedConcepts{
A concept map archetype (\mbox{\ref{temp.archetype}}) does not contain
any requirement members or satisfier members.
The set of members of a concept map archetype is the set of associated
@@ -3942,17 +3916,11 @@
analysis.}
\pnum
-\addedConcepts{Concept maps shall} \changedCCC{provide
-a definition for every associated function (\mbox{\ref{concept.fct}}),
-associated type (\mbox{\ref{concept.assoc}}), and associated
-template}{satisfy every associated function (\mbox{\ref{concept.fct}}),
+\addedConcepts{Concept maps shall satisfy every associated function (\mbox{\ref{concept.fct}}),
associated type and associated template requirement
-(\mbox{\ref{concept.assoc}})}
-\addedConcepts{of}\removedCCC{the concept named by}
-\addedConcepts{its concept instance and
+(\mbox{\ref{concept.assoc}}) of its concept instance and
all of the requirements inherited from its refined
-concept}\changedCCC{s}{ instances}
-\addedConcepts{(\mbox{\ref{concept.refine}}). \mbox{\enterexample}}
+concept instances (\mbox{\ref{concept.refine}}). \mbox{\enterexample}}
\begin{codeblock}
concept C<typename T, typename U> { T f(T); U f(U); }
@@ -4004,8 +3972,8 @@
\pnum
\addedConcepts{A concept map for an implicit concept is implicitly defined when it is
-needed} \addedCC{by concept map lookup (\mbox{\ref{temp.req.sat}})}\addedConcepts{.}
-\addedCC{If any requirement of the concept or its refinements is not
+needed} \addedConcepts{by concept map lookup (\mbox{\ref{temp.req.sat}})}\addedConcepts{.}
+\addedConcepts{If any requirement of the concept or its refinements is not
satisfied by the implicitly-defined concept map, concept map lookup fails.}
\addedConcepts{The implicitly-defined concept map is defined in the
namespace of the concept. \mbox{\enterexample}}
@@ -4081,7 +4049,7 @@
\rSec3[concept.map.fct]{Associated function definitions}
\pnum
-\addedCC{Function definitions in the concept map can be used to adapt the
+\addedConcepts{Function definitions in the concept map can be used to adapt the
syntax of the concept arguments
to the syntax expected by the concept. \mbox{\enterexample}}
\begin{codeblock}
@@ -4112,7 +4080,7 @@
map is \mbox{\techterm{inline}}.}
\pnum
-\addedCC{An associated function (or function template) requirement is
+\addedConcepts{An associated function (or function template) requirement is
satisfied as follows. Given an associated function (call it
\mbox{\tcode{f}}), let \mbox{\tcode{R}}
be the return type of \mbox{\tcode{f}}, after substitution of
@@ -4121,16 +4089,16 @@
the concept map, defined
below. Then, the associated function requirement is satisfied if:}
\begin{itemize}
-\additemCC{if \mbox{\tcode{R}} is \mbox{\techterm{cv} \tcode{void}}
+\additemConcepts{if \mbox{\tcode{R}} is \mbox{\techterm{cv} \tcode{void}}
and the expression \mbox{\tcode{E}} is well-formed,}
-\additemCC{if \mbox{\tcode{R}} is not \mbox{\techterm{cv}
+\additemConcepts{if \mbox{\tcode{R}} is not \mbox{\techterm{cv}
\tcode{void}} and the expression ``\mbox{\tcode{E}} implicitly
converted to \mbox{\tcode{R}}'' is well-formed, or}
-\additemCC{if \mbox{\tcode{f}} has a default implementation.}
+\additemConcepts{if \mbox{\tcode{f}} has a default implementation.}
\end{itemize}
\pnum
-\addedCC{The expression \mbox{\tcode{E}} is defined differently
+\addedConcepts{The expression \mbox{\tcode{E}} is defined differently
depending on the associated function and the concept map
definition. Let \mbox{\tcode{parm1}}, \mbox{\tcode{parm2}}, ...,
\mbox{\tcode{parm$N$}} be the parameters
@@ -4143,7 +4111,7 @@
type, then \mbox{\tcode{parm$i'$}} is treated as an lvalue,
otherwise, \mbox{\tcode{parm$i'$}} is treated as an rvalue.}
-\addedCC{For an associated member function (or member function
+\addedConcepts{For an associated member function (or member function
template) in a type \mbox{\tcode{X}} (after substitution of the concept
map arguments into the associated member function or
member function template), let \mbox{\tcode{x}} be an object of type
@@ -4155,9 +4123,9 @@
\mbox{\tcode{x}} is an lvalue; otherwise, \mbox{\tcode{x}} is an
rvalue.}
-\addedCC{The expression \mbox{\tcode{E}} is defined as follows:}
+\addedConcepts{The expression \mbox{\tcode{E}} is defined as follows:}
\begin{itemize}
-\additemCC{If \mbox{\tcode{f}} is an associated non-member function or
+\additemConcepts{If \mbox{\tcode{f}} is an associated non-member function or
function template and the concept map contains one or more function or
function template definitions with the same name as
\mbox{\tcode{f}},
@@ -4168,7 +4136,7 @@
\mbox{\ref{basic.lookup.unqual}} and argument dependent lookup
\mbox{\ref{basic.lookup.argdep}} are suppressed),}
-\additemCC{if \mbox{\tcode{f}} is a non-static associated member
+\additemConcepts{if \mbox{\tcode{f}} is a non-static associated member
function and the concept map contains one or more member function
or member function template definitions in the type
\mbox{\tcode{X}} and with the same name as \mbox{\tcode{f}},
@@ -4176,7 +4144,7 @@
...,}} \mbox{\tcode{parm$N'$)}}, where name lookup of \mbox{\tcode{x.f}} refers
to the definitions of \mbox{\tcode{X::f}} in the concept map,}
-\additemCC{if \mbox{\tcode{f}} is a static associated member function
+\additemConcepts{if \mbox{\tcode{f}} is a static associated member function
and the concept map contains one or more member function
or member function template definitions in the type
\mbox{\tcode{X}} and with the same name as \mbox{\tcode{f}},
@@ -4215,17 +4183,16 @@
call \mbox{\tcode{f(\tcode{parm1$'$}, \tcode{parm2$'$}, ...,
\tcode{parm$N'$})}},}
-\additemCC{if the associated function or function template is a static
+\additemConcepts{if the associated function or function template is a static
member function or function template in the type \mbox{\tcode{X}},
\mbox{\tcode{E}} is a call
\mbox{\tcode{X::f(\tcode{parm1$'$}, \tcode{parm2$'$}, ...,
\tcode{parm$N'$})}},}
-\item \changedCC{if the constructor requirement}{if the associated
+\item \addedConcepts{if the associated
function is a constructor or constructor template that is
- \mbox{\tcode{explicit}} or}
- \addedConcepts{has \mbox{$N \neq
- 1$} parameters,} \addedCC{\mbox{\tcode{E}} is
+ \mbox{\tcode{explicit}} or has \mbox{$N \neq
+ 1$} parameters,} \addedConcepts{\mbox{\tcode{E}} is
\mbox{\tcode{X(parm1$'$, parm2$'$, ..., parm$N'$)}}.}
\addedConcepts{\enterexample}
\begin{codeblock}
@@ -4239,9 +4206,9 @@
\end{codeblock}
\addedConcepts{\exitexample}
-\item \changedCC{if the constructor requirement}{if the associated
- function is a constructor or constructor template that}
- \addedCC{has one parameter (and is not \mbox{\tcode{explicit}}),
+\item \addedConcepts{if the associated
+ function is a constructor or constructor template that has one
+ parameter (and is not \mbox{\tcode{explicit}}),
\mbox{\tcode{E}} is ``\mbox{\tcode{parm1$'$}} implicitly converted to
\mbox{\tcode{X}}''.}
\addedConcepts{\enterexample}
@@ -4269,7 +4236,7 @@
\end{codeblock}
\addedConcepts{\exitexample}
-\additemCC{if the associated function is a destructor,
+\additemConcepts{if the associated function is a destructor,
\mbox{\tcode{E}} is \mbox{\tcode{x.$\sim$X()}}.}\addedConcepts{\enterexample}
\begin{codeblock}
concept Destructible<typename T> {
@@ -4292,7 +4259,7 @@
new(parm1$'$, parm2$'$,
..., parm$N'$)}} or \mbox{\tcode{operator new[](parm1$'$)}},
respectively.}
-\addedCC{Name lookup for the allocation function occurs in the scope
+\addedConcepts{Name lookup for the allocation function occurs in the scope
of \mbox{\tcode{X}}; if this lookup fails to
find the name, the allocation function's name is looked up in the
global scope.}
@@ -4302,7 +4269,7 @@
\mbox{\tcode{E}} is \mbox{\tcode{operator delete(parm1$'$, parm2$'$,
..., parm$N'$)}} or \mbox{\tcode{operator
delete[](parm1$'$)}}, respectively.}
-\addedCC{Name lookup for the deallocation function occurs in the scope
+\addedConcepts{Name lookup for the deallocation function occurs in the scope
of \mbox{\tcode{X}}; if this lookup fails to
find the name, the deallocation function's name is looked up in the
global scope.}
@@ -4312,7 +4279,7 @@
\end{itemize}
\pnum
-\addedCC{Each satisfied associated function (or function template)
+\addedConcepts{Each satisfied associated function (or function template)
requirement has a corresponding associated function candidate
set. An \mbox{\techterm{associated function candidate set}} is a
candidate set (\mbox{\ref{temp.constrained.set}}) representing the
@@ -4321,14 +4288,14 @@
the expression \mbox{\tcode{E}} used to
determine that the requirement was satisfied.}
\begin{itemize}
- \additemCC{if the evaluation of \mbox{\tcode{E}} involves overload
+ \additemConcepts{if the evaluation of \mbox{\tcode{E}} involves overload
resolution at the top level, the seed is the candidate function
(\mbox{\ref{over.match.funcs}}) determined by the outermost
application of overload resolution (clause~\mbox{\ref{over}}), or}
- \additemCC{if \mbox{\tcode{E}} is a pseudo destructor call
+ \additemConcepts{if \mbox{\tcode{E}} is a pseudo destructor call
(\mbox{\ref{expr.pseudo}}), the seed is a
\mbox{\techterm{pseudo-destructor-name}}, otherwise}
- \additemCC{the seed is the initialization of an object.}
+ \additemConcepts{the seed is the initialization of an object.}
\end{itemize}
@@ -4373,7 +4340,7 @@
\addedConcepts{\mbox{\exitexample}}
\pnum
-\addedCC{A concept map member that satisfies an associated type or
+\addedConcepts{A concept map member that satisfies an associated type or
template requirement can be implicitly defined using template
argument deduction (\mbox{\ref{temp.deduct}}) with one or more
associated function requirements (\mbox{\ref{concept.map.fct}}).
@@ -4407,7 +4374,7 @@
// implicitly-defined Dereferenceable<int*>::value_type is int
}
\end{codeblock}
-\addedCC{\mbox{\exitexample}}
+\addedConcepts{\mbox{\exitexample}}
\pnum
\addedConcepts{If an associated type or template (\mbox{\ref{concept.assoc}}) has a default
@@ -4644,17 +4611,16 @@
\pnum
\addedConcepts{When a concept map is defined for a concept
\mbox{\tcode{C}} that has a refinement clause, concept maps for each
- of the }\changedCCC{concepts refined by}{concept instances in the
- refinement clause of}
-\addedConcepts{\mbox{\tcode{C}}}
-\changedCCC{are implicitly}{will be defined}
-\addedConcepts{in the namespace of which the
-concept map is a member}
-\removedCCC{unless already defined}\addedConcepts{.}
-\addedCC{If a concept map for a given concept instance in the
+ of the concept instances in the
+ refinement clause of
+\mbox{\tcode{C}}
+will be defined
+in the namespace of which the
+concept map is a member.
+If a concept map for a given concept instance in the
refinement clause has not be defined in the namespace of the
- refining concept map, it is defined implicitly.}
-\addedConcepts{\mbox{\enterexample}}
+ refining concept map, it is defined implicitly.
+\mbox{\enterexample}}
\begin{codeblock}
concept A<typename T> { }
concept B<typename T> : A<T> { }
@@ -4665,9 +4631,8 @@
\pnum
\addedConcepts{When a concept map is implicitly defined for a refinement,
-definitions in the concept map for the refining concept}
-\changedCCC{can also be}{are}
-\addedConcepts{used to
+definitions in the concept map for the refining concept are
+used to
satisfy the requirements of the refined concept (\mbox{\ref{concept.map}}).
\mbox{\enternote} a single function definition in a concept
map can be used to satisfy multiple requirements. \mbox{\exitnote}
@@ -4695,7 +4660,7 @@
only for certain refinements of the concept corresponding to the
concept map template. A concept map template for a particular refined
concept is defined}
-\addedCC{in the namespace of the concept map}
+\addedConcepts{in the namespace of the concept map}
\addedConcepts{if all of the template parameters of the refining
concept map template can be deduced from the
\mbox{\techterm{template-argument-list}} of
@@ -4704,7 +4669,7 @@
(\mbox{\ref{temp.deduct.type}}). If template argument deduction fails, then a
concept map template corresponding to the refined concept shall
have been defined}
-\addedCC{in the namespace of the concept map}\addedConcepts{.
+\addedConcepts{in the namespace of the concept map}\addedConcepts{.
\mbox{\enterexample}}
\begin{codeblock}
concept C<typename T> { }
@@ -4732,7 +4697,7 @@
map or concept map template if}
\begin{itemize}
\item \addedConcepts{the definition in the refined concept
-map or concept map template was implicitly defined from} \addedCC{an explicit
+map or concept map template was implicitly defined from} \addedConcepts{an explicit
definition in} \addedConcepts{the refining
concept map or concept map template,}
\additemConcepts{the definition was explicitly provided in the refined
@@ -4811,7 +4776,7 @@
the template requirements of the constrained template
(\mbox{\ref{basic.scope.req}}). \mbox{\enternote} Within a constrained
context, template parameters behave as if aliased}
-\addedCC{to}
+\addedConcepts{to}
\addedConcepts{their
corresponding archetypes
(\mbox{\ref{temp.archetype}}) so there are no dependent types
@@ -4819,14 +4784,13 @@
(\mbox{\ref{temp.dep.expr}}) or dependent names (\mbox{\ref{temp.dep}}).
Instantiation in constrained contexts (\mbox{\ref{temp.constrained.inst}})
still substitutes types, templates and values for template
- parameters}\removedCCC{, but the substitution does not require additional name
- lookup (\mbox{\ref{basic.lookup}})}\addedConcepts{. \mbox{\exitnote} A constrained
- context is:}
+ parameters. \mbox{\exitnote} A constrained
+ context is:}
\begin{itemize}
\additemConcepts{the body of a constrained function template,}
\additemConcepts{the \mbox{\techterm{expression}} in a
\mbox{\tcode{decltype}} type or \mbox{\tcode{sizeof}}}
-\addedCC{or \mbox{\tcode{alignof}}} \addedConcepts{expression
+\addedConcepts{or \mbox{\tcode{alignof}}} \addedConcepts{expression
that occurs within the signature of a constrained function template,}
\additemConcepts{the \mbox{\techterm{base-clause}} (if any) of a constrained
class template,}
@@ -4842,27 +4806,24 @@
\mbox{\techterm{unconstrained context}}. Within a constrained
context, several constructs provide unconstrained contexts:}
\begin{itemize}
- \additemConcepts{a late-checked block (\mbox{\ref{stmt.late}})}
- \removedCCC{indicates a
- compound statement that is an unconstrained context}\addedConcepts{,}
+ \additemConcepts{a late-checked block (\mbox{\ref{stmt.late}}),}
\additemConcepts{a default template argument in a
- \mbox{\techterm{template-parameter}}} \removedCCC{is an
- unconstrained context}\addedConcepts{,}
+ \mbox{\techterm{template-parameter}},}
\additemConcepts{a default argument in a
- \mbox{\techterm{parameter-declaration}}}\addedCC{, unless that
+ \mbox{\techterm{parameter-declaration}}}\addedConcepts{, unless that
default argument occurs within a local class
(\mbox{\ref{class.local}}),}
- \additemCC{the \mbox{\techterm{requires-clause}},
+ \additemConcepts{the \mbox{\techterm{requires-clause}},
\mbox{\techterm{type-specifier}}, and \mbox{\techterm{declarator}}
of a constrained member (\mbox{\ref{class.mem}}), and}
- \additemCC{a member template of a constrained template
+ \additemConcepts{a member template of a constrained template
(\mbox{\ref{temp.mem}}). \mbox{\enternote}
The member template itself will still be a constrained template,
and its body will be a constrained context. \mbox{\exitnote}}
\end{itemize}
\pnum
-\addedCC{If a type or expression within the signature of a constrained
+\addedConcepts{If a type or expression within the signature of a constrained
template, the \mbox{\techterm{template-parameter-list}} of a
constrained template, or the \mbox{\techterm{requires-clause}} of a
constrained template (if any) would be ill-formed if the associated
@@ -4877,10 +4838,10 @@
typename C<T>::type::inner_type f(T const&); // error: typename C<T>::type::inner_type would be ill-formed
// in a constrained context
\end{codeblock}
-\addedCC{\mbox{\exitexample}}
+\addedConcepts{\mbox{\exitexample}}
\pnum
-\addedCC{Within a constrained context, a program shall not refer to an
+\addedConcepts{Within a constrained context, a program shall not refer to an
unconstrained template.}
\rSec2[temp.req]{Template requirements}
@@ -4909,7 +4870,7 @@
\addedConcepts{A \mbox{\techterm{requires-clause}} contains a list of
requirements, all of which must be satisfied by the template
arguments for the template.}
-\addedCC{\mbox{\enternote} Requirement satisfaction is described in~\mbox{\ref{temp.req.sat}}. \mbox{\exitnote}}
+\addedConcepts{\mbox{\enternote} Requirement satisfaction is described in~\mbox{\ref{temp.req.sat}}. \mbox{\exitnote}}
\addedConcepts{A \mbox{\techterm{requirement}} not
containing a \mbox{\tcode{!}} is a \mbox{\techterm{concept
requirement}}. A \mbox{\techterm{requirement}} containing a
@@ -5001,13 +4962,13 @@
\rSec3[temp.req.sat]{Requirement satisfaction}
\pnum
-\addedCC{During template argument deduction (\mbox{\ref{temp.deduct}})
+\addedConcepts{During template argument deduction (\mbox{\ref{temp.deduct}})
against a constrained template, it is necessary to determine whether
each of the requirements of the constrained template can be
satisfied by the template arguments.}
\pnum
-\addedCC{A concept requirement is \mbox{\techterm{satisfied}} if
+\addedConcepts{A concept requirement is \mbox{\techterm{satisfied}} if
concept map lookup (described below) finds a
unique concept map with the same full concept name as the
concept named by the concept requirement and whose template
@@ -5050,7 +5011,7 @@
\addedConcepts{\mbox{\exitexample}}
\pnum
-\addedCC{A negative requirement is satisfied if concept map
+\addedConcepts{A negative requirement is satisfied if concept map
lookup fails to find a concept map that would satisfy the
corresponding concept requirement. \mbox{\enternote} If concept map
lookup results in an ambiguity, concept map lookup halts and the
@@ -5078,7 +5039,7 @@
\addedConcepts{\mbox{\exitexample}}
\pnum
-\addedCC{\mbox{\techterm{Concept map lookup}} attempts to find a
+\addedConcepts{\mbox{\techterm{Concept map lookup}} attempts to find a
concept map that corresponds to the concept instance (call it
\mbox{\tcode{I}})
formed from the concept of a requirement and its template argument list
@@ -5086,7 +5047,7 @@
template parameters. There
is an associated full concept name}
\addedZ{(\mbox{\ref{concept.def}})}
-\addedCC{of \mbox{\tcode{I}}; call it
+\addedConcepts{of \mbox{\tcode{I}}; call it
\mbox{\tcode{N}}. Concept map lookup searches an ordered sequence
\mbox{\tcode{Q}} (defined below) where each element is a set of
concept maps called
@@ -5096,32 +5057,32 @@
\mbox{\tcode{S}}}
\begin{itemize}
- \additemCC{exactly one matching non-template concept map or, if one does not
+ \additemConcepts{exactly one matching non-template concept map or, if one does not
exist,}
- \additemCC{exactly one most-specific matching concept map template
+ \additemConcepts{exactly one most-specific matching concept map template
according to concept map matching rules
(\mbox{\ref{temp.concept.map}}).}
\end{itemize}
-\addedCC{If no matching concept map is found within a set
+\addedConcepts{If no matching concept map is found within a set
\mbox{\tcode{S}} in \mbox{\tcode{Q}}, concept map lookup proceeds to
the next set in \mbox{\tcode{Q}}. If partial ordering of concept
map templates results in an ambiguity, concept map lookup returns
no result.}
\pnum
-\addedCC{When concept map lookup is performed during the
+\addedConcepts{When concept map lookup is performed during the
instantiation of a constrained template
(\mbox{\ref{temp.constrained.inst}}), \mbox{\tcode{Q}} is defined as
the following ordered sequence:}
\begin{enumerate}
- \additemCC{\mbox{\tcode{S}} is the set of concept maps, each with
+ \additemConcepts{\mbox{\tcode{S}} is the set of concept maps, each with
name \mbox{\tcode{N}}, that have replaced the concept map
archetypes used in the constrained template.}
- \additemCC{\mbox{\tcode{S}} is the set of concept maps found by
+ \additemConcepts{\mbox{\tcode{S}} is the set of concept maps found by
searching for \mbox{\tcode{N}} in the namespaces of which certain
concept maps in (1) are members and in the associated namespaces
of those namespaces (\mbox{\ref{namespace.def}});
@@ -5130,7 +5091,7 @@
were explicitly defined or were instantiated from concept map
templates are considered when determining which namespaces to search.}
- \additemCC{If a concept map for \mbox{\tcode{I}} can be implicitly
+ \additemConcepts{If a concept map for \mbox{\tcode{I}} can be implicitly
defined (\mbox{\ref{concept.map}}), \mbox{\tcode{S}}
contains the implicitly-defined concept map for
\mbox{\tcode{I}}. Otherwise, \mbox{\tcode{S}} is empty.}
@@ -5161,14 +5122,14 @@
\exitexample\
\pnum
-\addedCC{In all other cases, \mbox{\tcode{Q}} is defined as the
+\addedConcepts{In all other cases, \mbox{\tcode{Q}} is defined as the
ordered sequence:}
\begin{enumerate}
- \additemCC{\mbox{\tcode{S}} is formed by performing unqualified name
+ \additemConcepts{\mbox{\tcode{S}} is formed by performing unqualified name
lookup (\mbox{\ref{basic.lookup.unqual}}) for \mbox{\tcode{N}}.}
- \additemCC{\mbox{\tcode{S}} is the set of concept maps found by
+ \additemConcepts{\mbox{\tcode{S}} is the set of concept maps found by
searching for \mbox{\tcode{N}} in the namespace of which the
concept of \mbox{\tcode{I}} is a member and its associated
namespaces (\mbox{\ref{namespace.def}});
@@ -5176,20 +5137,20 @@
followed during this search and all names found by way of
\mbox{\techterm{using-declarations}} are ignored.}
- \additemCC{If a concept map for \mbox{\tcode{I}} can be implicitly
+ \additemConcepts{If a concept map for \mbox{\tcode{I}} can be implicitly
defined (\mbox{\ref{concept.map}}), \mbox{\tcode{S}}
contains the implicitly-defined concept map for
\mbox{\tcode{I}}. Otherwise, \mbox{\tcode{S}} is empty.}
\end{enumerate}
-\addedCC{\mbox{\enternote} When concept map lookup is performed
+\addedConcepts{\mbox{\enternote} When concept map lookup is performed
within a constrained context (\mbox{\ref{temp.constrained}}),
concept map archetypes, whose names are placed at the same scope as
template parameters, can be found by unqualified lookup.
\mbox{\exitnote}}
\pnum
-\addedCC{If concept map lookup finds a matching concept map in a set
+\addedConcepts{If concept map lookup finds a matching concept map in a set
\mbox{\tcode{S}} within \mbox{\tcode{Q}}, concept map lookup
succeeds and the remaining elements of
\mbox{\tcode{Q}} are ignored. \mbox{\enternote} The ordering of name-finding
@@ -5214,10 +5175,10 @@
}
}
\end{codeblock}
-\addedCC{\mbox{\exitexample} \mbox{\exitnote}}
+\addedConcepts{\mbox{\exitexample} \mbox{\exitnote}}
\pnum
-\addedCC{\mbox{\enternote} Concept maps declared in the namespace of the
+\addedConcepts{\mbox{\enternote} Concept maps declared in the namespace of the
concept itself will be found last by concept map lookup.}
\addedConcepts{\mbox{\enterexample}}
\begin{codeblock}
@@ -5230,7 +5191,7 @@
f(1); // Ok, finds N1::concept_map C<int> because it is in the same namespace as concept N1::C.
}
\end{codeblock}
-\addedConcepts{\mbox{\exitexample}}\addedCC{\mbox{\exitnote}}
+\addedConcepts{\mbox{\exitexample}}\addedConcepts{\mbox{\exitnote}}
\rSec3[temp.req.impl]{Requirement implication}
@@ -5251,7 +5212,7 @@
\additemConcepts{the template parameters of a constrained template,}
\additemConcepts{the requirements of a constrained template (including
implied requirements),}
-\additemConcepts{the associated requirements} \addedCC{and
+\additemConcepts{the associated requirements} \addedConcepts{and
refinements}
\addedConcepts{of a concept, and}
\additemConcepts{the type of an associated function requirement.}
@@ -5329,15 +5290,11 @@
\pnum
\addedConcepts{In the definition of a}
-\addedCC{constrained}
+\addedConcepts{constrained}
\addedConcepts{class template partial specialization, the
requirements of its primary class template (\mbox{\ref{temp.class.spec}}),
after substitution of the template arguments of the class template partial
specialization, are implied.}
-\removedCC{\mbox{\enternote} this rule ensures that a
-class template partial specialization of a constrained template is a constrained
-template, even if does not have template requirements explicitly
-specified. \mbox{\exitnote}}
\addedConcepts{If this substitution results
in a requirement that does not depend on any template parameter, then
the requirement must be satisfied (\mbox{\ref{temp.req}}); otherwise, the
@@ -5656,11 +5613,8 @@
\addedConcepts{\mbox{\exitexample\exitnote}}
\pnum
-\addedConcepts{In a constrained}
-\changedCCC{template}{context}\addedConcepts{, for each concept requirement
-that is stated in or implied by the}
-\changedCCC{template}{corresponding}
-\addedConcepts{requirements,
+\addedConcepts{In a constrained context, for each concept requirement
+that is stated in or implied by the corresponding requirements,
a \mbox{\techterm{concept map archetype}} for that
requirement is synthesized by
substituting the archetype of \mbox{\tcode{T}} for each occurrence of
@@ -5669,8 +5623,7 @@
map, and is used to resolve name
lookup into
requirements scope (\mbox{\ref{basic.scope.req}}) and satisfy the
-requirements of templates used inside the}\changedCCC{definition of the
-constrained template}{constrained context}\addedConcepts{.}
+requirements of templates used inside the constrained context.}
%
\addedConcepts{\mbox{\enterexample}}
\begin{codeblock}
@@ -5698,7 +5651,7 @@
\rSec2[temp.constrained.set]{Candidate sets}
\pnum
-\addedCC{A \mbox{\techterm{candidate set}} is a set containing
+\addedConcepts{A \mbox{\techterm{candidate set}} is a set containing
functions and function templates that is defined in a constrained
template (a \mbox{\techterm{retained}} \mbox{\techterm{candidate
set}},~\mbox{\ref{temp.constrained.inst}}) or as the result of
@@ -5713,70 +5666,70 @@
(\mbox{\ref{over.built}}) are considered functions. \exitnote}
\pnum
-\addedCC{Each candidate set has a \mbox{\techterm{seed}},
+\addedConcepts{Each candidate set has a \mbox{\techterm{seed}},
which provides the basis for the candidate set itself. All
functions and function templates that are consistent
with the seed are contained in the candidate set. The seed is
determined as part of the definition of
the candidate set, and will be one of:}
\begin{itemize}
-\additemCC{a function,}
-\additemCC{the initialization of an object (\mbox{\ref{dcl.init}}), or}
-\additemCC{a \mbox{\techterm{pseudo-destructor-name}}
+\additemConcepts{a function,}
+\additemConcepts{the initialization of an object (\mbox{\ref{dcl.init}}), or}
+\additemConcepts{a \mbox{\techterm{pseudo-destructor-name}}
(\mbox{\ref{expr.pseudo}}).}
\end{itemize}
\pnum
-\addedCC{A function is \mbox{\techterm{consistent with}} the seed if}
+\addedConcepts{A function is \mbox{\techterm{consistent with}} the seed if}
\begin{itemize}
-\item \addedCC{it has the same name as the seed,}
-\item \addedCC{its enclosing namespace is the same as the enclosing
+\item \addedConcepts{it has the same name as the seed,}
+\item \addedConcepts{its enclosing namespace is the same as the enclosing
namespace of the seed,}
-\item \addedCC{the seed has a return type of \mbox{\techterm{cv}
+\item \addedConcepts{the seed has a return type of \mbox{\techterm{cv}
\tcode{void}} or the function has the same return type as the seed, after the
reference (if any)
and then top-level \mbox{\techterm{cv-qualifiers}} (if any) have been
removed from the return types of the seed and the function, and}
-\additemCC{it has the same \mbox{\techterm{parameter-type-list}} as
+\additemConcepts{it has the same \mbox{\techterm{parameter-type-list}} as
the seed, after making the following adjustments to both
\mbox{\techterm{parameter-type-list}}s:}
\begin{itemize}
- \additemCC{for a non-static member function, add the implicit
+ \additemConcepts{for a non-static member function, add the implicit
object parameter (\mbox{\ref{over.match.funcs}}) as the first
parameter in the \mbox{\techterm{parameter-type-list}},}
- \additemCC{for each parameter type, remove the top-level reference
+ \additemConcepts{for each parameter type, remove the top-level reference
(if any) and then top-level \mbox{\techterm{cv-qualifiers}} (if
any),}
- \additemCC{if the function has \mbox{$M$} parameters, the seed has
+ \additemConcepts{if the function has \mbox{$M$} parameters, the seed has
\mbox{$N$} parameters, and \mbox{$M > N$}, remove each of the last
\mbox{$M-N$} parameters that has a default argument from the
\mbox{\techterm{parameter-type-list}}, and}
- \additemCC{remove the ellipsis, if any.}
+ \additemConcepts{remove the ellipsis, if any.}
\end{itemize}
\end{itemize}
-\addedCC{\enternote No function or function template is consistent
+\addedConcepts{\enternote No function or function template is consistent
with a non-function seed. A seed that is a function is consistent
with itself. \exitnote}
\pnum
-\addedCC{A function template is consistent with the seed if: }
+\addedConcepts{A function template is consistent with the seed if: }
\begin{itemize}
-\additemCC{it has the same name as the seed, and}
-\additemCC{its enclosing namespace is the same as the enclosing
+\additemConcepts{it has the same name as the seed, and}
+\additemConcepts{its enclosing namespace is the same as the enclosing
namespace of the seed.}
\end{itemize}
\pnum
-\addedCC{A candidate set is a set of overloaded
+\addedConcepts{A candidate set is a set of overloaded
functions. Overload resolution (\mbox{\ref{over.match}}) for a
candidate set is subject to the following additional conditions:}
\begin{itemize}
\item
-\addedCC{the set of candidate functions for overload resolution is the
+\addedConcepts{the set of candidate functions for overload resolution is the
set of functions in the candidate set, and}
\item
-\addedCC{if template argument deduction on a candidate function
+\addedConcepts{if template argument deduction on a candidate function
produces a function template specialization that is not consistent
with the seed of the candidate set, the function template
specialization is not a viable function
@@ -5800,7 +5753,7 @@
member of the corresponding concept map. \mbox{\exitnote}}
\pnum
-\addedCC{In the instantiation of a constrained template, a call
+\addedConcepts{In the instantiation of a constrained template, a call
to a function that resolves to an associated
function in a concept map archetype (\mbox{\ref{temp.archetype}})
will be instantiated as a call to the associated function candidate set
@@ -5832,7 +5785,7 @@
\exitexample\
\pnum
-\addedCC{A function template specialization in a constrained
+\addedConcepts{A function template specialization in a constrained
template instantiates to a reference to that function template
specialization's retained candidate set. The
\mbox{\techterm{retained candidate set}} is a candidate set
@@ -5866,7 +5819,7 @@
// and \#3, and partial ordering of function templates selects \#3.
}
\end{codeblock}
-\addedCC{\mbox{\exitexample}\mbox{\exitnote}}
+\addedConcepts{\mbox{\exitexample}\mbox{\exitnote}}
\pnum
\addedConcepts{In the instantiation of a constrained template, a template
@@ -5874,16 +5827,11 @@
(\mbox{\ref{temp.archetype}}) will be replaced by the template specialization
that results from replacing each occurrence of an archetype with its
corresponding type.}
-\addedCC{\mbox{\enternote} If the template specialization is a
+\addedConcepts{\mbox{\enternote} If the template specialization is a
template alias (\mbox{\ref{temp.alias}}), the substitution will occur
in the \mbox{\techterm{type-id}} of the template alias. \mbox{\exitnote}}
-\addedConcepts{The resulting}
-\changedCCC{template specialization}{type}
-\addedConcepts{ (call it
-\mbox{\tcode{A}})
-shall be compatible with the}
-\changedCCC{template specialization}{type}
-\addedConcepts{involving
+\addedConcepts{The resulting type (call it \mbox{\tcode{A}})
+shall be compatible with the type involving
archetypes (call it \mbox{\tcode{A$'$}}) that it
replaced, otherwise the program is ill-formed. The template
specializations are compatible if all of the following conditions hold:}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk