# Boost-Commit :

From: dgregor_at_[hidden]
Date: 2008-04-07 15:45:57

Author: dgregor
Date: 2008-04-07 15:45:56 EDT (Mon, 07 Apr 2008)
New Revision: 44107
URL: http://svn.boost.org/trac/boost/changeset/44107

Log:
Big cleanup of candidate sets wording
Text files modified:
sandbox/committee/concepts/wording/wording.tex | 153 ++++++++++++++++++++-------------------
1 files changed, 77 insertions(+), 76 deletions(-)

Modified: sandbox/committee/concepts/wording/wording.tex
==============================================================================
--- sandbox/committee/concepts/wording/wording.tex (original)
+++ sandbox/committee/concepts/wording/wording.tex 2008-04-07 15:45:56 EDT (Mon, 07 Apr 2008)
@@ -3655,11 +3655,13 @@

\pnum
a definition for every associated function (\mbox{\ref{concept.fct}}),
-associated type (\mbox{\ref{concept.assoc}}), and associated template of the
-concept named by
-its concept instance and
+associated type (\mbox{\ref{concept.assoc}}), and associated
+template}{satisfy every associated function (\mbox{\ref{concept.fct}}),
+associated type and associated template requirement
+(\mbox{\ref{concept.assoc}})}
+\addedConcepts{of the concept named by its concept instance and
all of the requirements inherited from its refined concepts.
(\mbox{\ref{concept.refine}}). \mbox{\enterexample}}
\begin{codeblock}
@@ -3688,7 +3690,7 @@
\addedConcepts{At the point of definition of a concept map, all associated
requirements (\mbox{\ref{concept.req}}) of the corresponding
concept and its refined concepts (\mbox{\ref{concept.refine}}) shall be
-satisfied. \mbox{\enterexample}}
+satisfied (\mbox{\ref{temp.req.sat}}). \mbox{\enterexample}}
\begin{codeblock}
concept SignedIntegral<typename T> { /* ... */ }

@@ -4003,50 +4005,23 @@
\pnum
\addedCC{Each satisfied associated function (or function template)
requirement has a corresponding associated function candidate
- set. An \mbox{\techterm{associated function candidate set}} is a set
- of functions (including and candidate functions that represent
- built-in operations (\mbox{\ref{over.built}})) and function
- templates, that is the result of name lookup for the associated
- function within the concept map. The associated function candidate
- set is determined based on the expression \mbox{\tcode{E}} used to
+ set. An \mbox{\techterm{associated function candidate set}} is a
+ candidate set (\mbox{\ref{temp.constrained.set}}) representing the
+ functions or operations used to satisfy the requirement. The
+ seed of the associated function candidate set is determined based on
+ the expression \mbox{\tcode{E}} used to
determine that the requirement was satisfied.}
-
-\addedCC{Each associated function candidate set has a
- \mbox{\techterm{seed}}. A seed is the candidate function
- (\mbox{\ref{over.match.funcs}}) determined by the outermost
- application of overload resolution (clause~\mbox{\ref{over}}) during the
- processing of \mbox{\tcode{E}}. The associated function candidate
- set contains all functions and function templates that are
- \mbox{\techterm{consistent with}} the seed. A function is 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
- namespace of the seed,}
-\item \addedCC{it has the same return type as the seed, after references
- and then top-level \mbox{\techterm{cv-qualifiers}} have been
- removed, and}
-\additemCC{it has the same \mbox{\techterm{parameter-type-list}} as
- the seed, after making the following adjustments to both
- \mbox{\techterm{parameter-type-list}}:}
\begin{itemize}
- \additemCC{for each parameter type, remove the top-level reference
- (if any) and then top-level \mbox{\techterm{cv-qualifiers}} (if
- any), and}
- \additemCC{if the function has \mbox{$M$} parameters, the seed as
- \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}}.}
+ 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
+ (\mbox{\ref{expr.pseudo}}), the seed is a
+ \mbox{\techterm{pseudo-destructor-name}}, otherwise}
+ \additemCC{the seed is the initialization of an object.}
\end{itemize}

-\end{itemize}
-
-\addedCC{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
- namespace of the seed.}
-\end{itemize}

\rSec3[concept.map.assoc]{Associated type and template definitions}

@@ -5392,30 +5367,38 @@
\end{codeblock}

-\rSec2[temp.constrained.set]{Nominee sets}
+\rSec2[temp.constrained.set]{Candidate sets}
\pnum
-\addedCC{A \mbox{\techterm{nominee set}} is a set containing
- functions and function templates that is
- defined in a constrained template
- (\mbox{\ref{temp.constrained}}) or as the result of satisfying an
- associated function requirement in a concept map
- (\mbox{\ref{concept.map.fct}}). Nominee sets are used to capture a
- set of candidate functions that will be used in the instantiation of
- a constrained template (\mbox{\ref{temp.constrained.inst}}).
- For the purposes of this section, candidate operator functions
- (\mbox{\ref{over.built}}) are considered functions in a nominee
- set.}
-
-\pnum
-\addedCC{Each non-empty nominee set has a \mbox{\techterm{seed}},
- which is a function that provides the basis for
- the nominee set itself. Each of the functions in the nominee set is
- consistent with the seed.
- The seed is determined as part of the definition of the nominee
- set.}
+\addedCC{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}}) or as the result of
+ satisfying an associated function requirement in a concept map (an
+ \mbox{\techterm{associated}} \mbox{\techterm{function}} \mbox{\techterm{candidate
+ set}},~\mbox{\ref{concept.map.fct}}). Candidate sets are used to
+ capture a set of candidate functions that will be used in the
+ instantiation of a constrained template
+ (\mbox{\ref{temp.constrained.inst}}) or when referring to members in
+ a concept map (\mbox{\ref{concept.map}}). \mbox{\enternote} For the
+ purposes of this section, candidate operator functions
+ (\mbox{\ref{over.built}}) are considered functions. \exitnote}
+
+\pnum
+\addedCC{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 containing 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{the initialization of an object (\mbox{\ref{dcl.init}}), or}
+ (\mbox{\ref{expr.pseudo}}).}
+\end{itemize}

\pnum
-\addedCC{A function is \mbox{\techterm{consistent with}} a seed if}
+\addedCC{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
@@ -5423,19 +5406,37 @@
\item \addedCC{it has the same return type as the seed, after references
and then top-level \mbox{\techterm{cv-qualifiers}} have been
removed, and}
-\item \addedCC{TODO: fixmeit has the same parameter types as the seed, after
- references and then top-level
- \mbox{\techterm{cv-qualifiers}} have been removed
- (ignoring any parameters for which default arguments have
- been used).}
+\additemCC{it has the same \mbox{\techterm{parameter-type-list}} as
+ the seed, after making the following adjustments to both
+ \mbox{\techterm{parameter-type-list}}:}
+\begin{itemize}
+ \additemCC{for each parameter type, remove the top-level reference
+ (if any) and then top-level \mbox{\techterm{cv-qualifiers}} (if
+ any), and}
+ \additemCC{if the function has \mbox{$M$} parameters, the seed as
+ \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}}.}
+\end{itemize}
+\end{itemize}
+\addedCC{\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: }
+\begin{itemize}
+\additemCC{it has the same name as the seed, and}
+\additemCC{its enclosing namespace is the same as the enclosing
+ namespace of the seed.}
\end{itemize}

\pnum
-\addedCC{A call to a nominee set uses the contents of the nominee set as
+\addedCC{A call to a candidate set uses the contents of the candidate set as
resolution succeeds, the call
- to the nominee set is replaced with a call to the result of
- overload resolution; otherwise, the call to the nominee set is
+ to the candidate set is replaced with a call to the result of
+ overload resolution; otherwise, the call to the candidate set is
ill-formed.}

\rSec2[temp.constrained.inst]{Instantiation of constrained templates}
@@ -5756,13 +5757,13 @@
\end{codeblock}