|
Boost-Commit : |
From: dgregor_at_[hidden]
Date: 2008-04-03 16:13:10
Author: dgregor
Date: 2008-04-03 16:13:10 EDT (Thu, 03 Apr 2008)
New Revision: 44021
URL: http://svn.boost.org/trac/boost/changeset/44021
Log:
A class template partial specialization of a constrained class template is not necessarily a constrained template
Text files modified:
sandbox/committee/concepts/wording/wording.tex | 70 ++++++++++++++++++++-------------------
1 files changed, 36 insertions(+), 34 deletions(-)
Modified: sandbox/committee/concepts/wording/wording.tex
==============================================================================
--- sandbox/committee/concepts/wording/wording.tex (original)
+++ sandbox/committee/concepts/wording/wording.tex 2008-04-03 16:13:10 EDT (Thu, 03 Apr 2008)
@@ -88,7 +88,9 @@
(\ref{temp.req.sat}).
\item Add text to cope with inheriting constructors
(\ref{class.inhctor}).
-
+\item Clarify that a class template partial specialization of a
+ constrained class template is not necessarily a constrained template
+ (\ref{temp.req.impl}).
\end{itemize}
\section*{Typographical conventions}
@@ -267,14 +269,12 @@
\rSec2[basic.scope.pdecl]{Point of declaration}
\setcounter{Paras}{9}
-\color{addclr}
\pnum
-The point of declaration for a concept (\ref{concept}) is
-immediately after the identifier in the \techterm{concept-definition}. The point
-of declaration for a concept map (\ref{concept.map}) is
-immediately after the \techterm{concept-id} in the
-\techterm{concept-map-definition}.
-\color{black}
+\addedConcepts{The point of declaration for a concept (\mbox{\ref{concept}}) is
+immediately after the identifier in the \mbox{\techterm{concept-definition}}. The point
+of declaration for a concept map (\mbox{\ref{concept.map}}) is
+immediately after the \mbox{\techterm{concept-id}} in the
+\mbox{\techterm{concept-map-definition}}.}
\noindent\editorial{Add the following new sections to 3.3 [basic.scope] after [basic.scope.class]:}
@@ -283,48 +283,47 @@
\rSec2[basic.scope.concept]{Concept scope}
\pnum
\index{scope!concept}%
-The following rules describe the scope of names declared in concepts
-and concept maps.
+\addedConcepts{The following rules describe the scope of names declared in concepts
+and concept maps.}
\begin{enumeraten}
\item %
-The potential scope of a name declared in a concept or concept map
+\addedConcepts{The potential scope of a name declared in a concept or concept map
consists not only of the declarative region
following the name's point of declaration,
but also of all associated function bodies
-in that concept or concept map.
+in that concept or concept map.}
\item %
-A name
-\tcode{N}\
+\addedConcepts{A name
+\mbox{\tcode{N}}
used in a concept or concept map
-\tcode{S}\
+\mbox{\tcode{S}}
shall refer to the same declaration in its context and when re-evaluated in
the completed scope of
-\tcode{S}.
-No diagnostic is required for a violation of this rule.
+\mbox{\tcode{S}}.
+No diagnostic is required for a violation of this rule.}
\item %
-If reordering declarations in a concept or concept map yields an
+\addedConcepts{If reordering declarations in a concept or concept map yields an
alternate valid program under (1), the program is ill-formed,
-no diagnostic is required.
+no diagnostic is required.}
\item %
-A name declared within an associated function definition hides a declaration of the same name
+\addedConcepts{A name declared within an associated function definition hides a declaration of the same name
whose scope extends to or past the end of the associated function's concept or
-concept map.
+concept map.}
\end{enumeraten}
-\color{addclr}
\pnum
-The name of a concept member shall only be used as follows:
+\addedConcepts{The name of a concept member shall only be used as follows:}
\begin{itemize}
\item %
-in the scope of its concept (as described above)
-or a concept refining (\ref{concept.refine}) its concept,
+\addedConcepts{in the scope of its concept (as described above)
+or a concept refining (\mbox{\ref{concept.refine}}) its concept,}
\item %
-after the
-\tcode{::}\
-scope resolution operator (\ref{expr.prim}) applied to the name of a
-concept map or template type parameter (\ref{temp.param}).
+\addedConcepts{after the
+\mbox{\tcode{::}}\
+scope resolution operator (\mbox{\ref{expr.prim}}) applied to the name of a
+concept map or template type parameter (\mbox{\ref{temp.param}}).}
\end{itemize}
\rSec2[basic.scope.req]{Requirements scope}
@@ -5012,14 +5011,17 @@
\end{itemize}
\pnum
-\addedConcepts{In the definition of a class template partial specialization, the
+\addedConcepts{In the definition of a}
+\addedCC{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. \mbox{\enternote} this rule ensures that a
+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}
-If this substitution results
+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
program is ill-formed.
@@ -5029,7 +5031,7 @@
requires EqualityComparable<T>
class simple_set { };
-template<typename T>
+template<std::ObjectType T>
class simple_set<T*> // implies \tcode{EqualityComparable<T*>}
{
};
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