|
Boost-Commit : |
From: dgregor_at_[hidden]
Date: 2008-06-11 06:31:44
Author: dgregor
Date: 2008-06-11 06:31:43 EDT (Wed, 11 Jun 2008)
New Revision: 46317
URL: http://svn.boost.org/trac/boost/changeset/46317
Log:
iConcept
Text files modified:
sandbox/committee/concepts/wording/wording.tex | 146 +++++++++++++++++++++++++++++++--------
1 files changed, 114 insertions(+), 32 deletions(-)
Modified: sandbox/committee/concepts/wording/wording.tex
==============================================================================
--- sandbox/committee/concepts/wording/wording.tex (original)
+++ sandbox/committee/concepts/wording/wording.tex 2008-06-11 06:31:43 EDT (Wed, 11 Jun 2008)
@@ -1064,8 +1064,28 @@
\addedConcepts{\mbox{\exitexample}}
\pnum
-\addedConcepts{If no concept is specified in the concept map using declaration,
-all concept maps from the specified namespace are brought into scope.
+\addedCC{If no concept is specified in the concept map using declaration,
+ the following rule applies.
+Let X be the namespace specified in the \techterm{nested-name-specifier} of
+ the \techterm{using-declaration}.
+Let S be the set of all names of concept maps and concept map templates in
+ X and in the transitive closure of all namespaces nominated by
+ using-directives in X and its used namespaces,
+ except that using-directives that nominate non-inline namespaces
+ (\ref{namespace.memdef}) are ignored in any namespace,
+ including X,
+ directly containing one or more names of a concept map or concept map
+ template.
+No namespace is considered more than once to see if it contains a concept
+map or concept map template.
+If S is the empty set,
+ the program is ill-formed.
+For each element in S,
+ a name is introduced into the declarative region in which the
+ \techterm{using-declaration} appears.
+The name is a synonym for the referent concept map or concept map template.
+}
+addedConcepts{
\mbox{\enterexample}}
\begin{codeblock}
namespace N1 {
@@ -2267,6 +2287,7 @@
template-parameter:\br
type-parameter\br
parameter-declaration
+ \addedCC{constrained-template-parameter}
\end{bnf}
\begin{bnf}
@@ -2278,10 +2299,23 @@
\terminal{typename}\ identifier\opt\ \terminal{=}\ type-id\br
\terminal{template <}\ template-parameter-list \terminal{> class}\ \terminal{...}\opt\ identifier\opt\br
\terminal{template <}\ template-parameter-list \terminal{> class}\ identifier\opt\ \terminal{=}\ id-expression\br
- \addedConcepts{\mbox{\terminal{::}}\mbox{\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{...}}\mbox{\opt} identifier\mbox{\opt}}\br
- \addedConcepts{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name identifier\mbox{\opt} \mbox{\terminal{=}} type-id}\br
- \addedConcepts{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{<}}} \addedConcepts{simple-requirement-argument-list} \addedConcepts{\mbox{\terminal{>}} \mbox{\terminal{...}\opt} identifier} \br
- \addedConcepts{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{<}}} \addedConcepts{simple-requirement-argument-list} \addedConcepts{\mbox{\terminal{>}}} \addedConcepts{identifier} \addedConcepts{\mbox{\terminal{=}} type-id}\br
+ \removedCCC{\mbox{\terminal{::}}\mbox{\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{...}}\mbox{\opt} identifier\mbox{\opt}}\br
+ \removedCCC{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name identifier\mbox{\opt} \mbox{\terminal{=}} type-id}\br
+ \removedCCC{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{<}}} \removedCCC{simple-requirement-argument-list} \removedCCC{\mbox{\terminal{>}} \mbox{\terminal{...}\opt} identifier} \br
+ \removedCCC{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{<}}} \removedCCC{simple-requirement-argument-list} \removedCCC{\mbox{\terminal{>}}} \removedCCC{identifier} \removedCCC{\mbox{\terminal{=}} type-id}\br
+
+\index{constrained-template-parameter@\techterm{constrained-template-parameter}}%
+\addedCC{constrained-template-parameter:}\br
+ \addedCC{\mbox{\terminal{::}}\mbox{\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{...}}\mbox{\opt} identifier\mbox{\opt}}\br
+ \addedCC{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name identifier\mbox{\opt} constrained-default-argument\mbox{\opt}}\br
+ \addedCC{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{<}}} \addedCC{simple-requirement-argument-list} \addedCC{\mbox{\terminal{>}} \mbox{\terminal{...}\opt} identifier} \br
+ \addedCC{\mbox{\terminal{::}\opt} nested-name-specifier\mbox{\opt} concept-name \mbox{\terminal{<}}} \addedCC{simple-requirement-argument-list} \addedCC{\mbox{\terminal{>}}} \addedCC{identifier} \addedCC{constrained-default-argument\mbox{\opt}}\br
+
+\index{constrained-default-argument@\techterm{constrained-default-argument}}%
+\addedCC{constrained-default-argument:}\br
+ \addedCC{\mbox{\terminal{=}} type-id}\br
+ \addedCC{\mbox{\terminal{=}} assignment-expression }\br
+ \addedCC{\mbox{\terminal{=}} id-expression }\br
\addedConcepts{simple-requirement-argument-list}:\br
\addedConcepts{\mbox{\terminal{auto}}}\br
@@ -2308,29 +2342,58 @@
\setcounter{Paras}{17}
\color{addclr}
\pnum
-\addedConcepts{A \mbox{\techterm{type-parameter}} declared with a
+\addedConcepts{A }
+\changedCC{\mbox{\techterm{type-parameter}}}{\mbox{\techterm{template-parameter}}}
+\addedConcepts{ declared with a
\mbox{\techterm{concept-name}}
-is a template type parameter or parameter pack that specifies a
+is a template type}\addedCC{, non-type or template}
+\addedConcepts{parameter or parameter pack that specifies a
template requirement (\mbox{\ref{temp.req}}) using the \mbox{\techterm{simple form}}
-of template requirements. A template type parameter or parameter pack written
+of template requirements. }
+\addedCC{The kind (type, non-type or template) of the parameter is
+that of the first template parameter of the concept named in the
+\mbox{techterm{constrained-template-parameter}}. For a non-type parameter,
+the type is that of the first template parameter of the concept named in the
+\mbox{techterm{constrained-template-parameter}}. For a template parameter,
+the template parameter list is that of the first template parameter of the
+concept named in the \mbox{techterm{constrained-template-parameter}}. }
+\addedConcepts{A template}
+\removedCCC{type}
+\addedConcepts{parameter or parameter pack written
\mbox{\tcode{\BnfTermshape{::}\opt\
\BnfNontermshape{nested-name-specifier}\opt\ C ...\opt\ T}}, where \mbox{\tcode{C}} is a \mbox{\techterm{concept-name}}, is
-equivalent to a template type parameter or parameter pack written as
-\mbox{\tcode{typename T}} or \mbox{\tcode{typename... T}}, respectively,
+equivalent to a template
+}\removedCCC{type}\addedConcepts{
+parameter or parameter pack }
+\changedCC{
+ written as \mbox{\tcode{typename T}} or \mbox{\tcode{typename...
+T}}, respectively,}{T declared as a
+\mbox{\techterm{type-parameter}} or
+\mbox{\techterm{parameter-declaration}}}
+\addedConcepts{
with the template requirement or pack expansion \mbox{\tcode{\BnfTermshape{::}\opt\
\BnfNontermshape{nested-name-specifier}\opt\ C<T> ...\opt}} added to
the template requirements.}
%
-\addedConcepts{A template type parameter or parameter pack written
+\addedConcepts{A template }
+\removedCCC{type}
+\addedConcepts{ parameter or parameter pack written
\mbox{\tcode{\BnfTermshape{::}\opt\
\BnfNontermshape{nested-name-specifier}\opt\ C<auto, T2, T3, ..., T$N$>...\opt\
- T}}, is equivalent to a template type parameter or
+ T}}, is equivalent to a template }\removedCCC{type} parameter or
parameter pack
-written as \mbox{\tcode{typename T}} or \mbox{\tcode{typename... T}},
-respectively, with the template requirement}\\
+\changedCC{
+ written as \mbox{\tcode{typename T}} or \mbox{\tcode{typename...
+T}}, respectively,}{T declared as a
+\mbox{\techterm{type-parameter}} or
+\mbox{\techterm{parameter-declaration}}}
+\addedConcepts{
+with the template requirement}\\
\addedConcepts{\mbox{\tcode{\BnfTermshape{::}\opt\
\BnfNontermshape{nested-name-specifier}\opt\ C<T, T2, T3, ...,
T$N$>...\opt}} added to the template requirements.
+}
+\removedCC{
The first concept parameter of concept \mbox{\tcode{C}}
shall be a type parameter, and all concept parameters not otherwise
specified shall have default values. \mbox{\enterexample}}
@@ -2712,7 +2775,7 @@
in the function type of the template.
\addedConcepts{When the template is a constrained template,
the unique type is an archetype
- and concept maps for each of the
+ and concept map}\addedCC{ archetype}\addedConcepts{s for each of the
requirements stated in or implied by its template requirements
are also synthesized; see \mbox{\ref{temp.constrained}}.
\mbox{\enternote}
@@ -3884,8 +3947,12 @@
\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}}.}
+ \mbox{\techterm{requirement members}} and
+}\changedCCC{ \mbox{\techterm{satisfier members}}.}{members that satisfy
+requirement members. The latter may be explicitly declared within the
+concept, explicitly declared within a refinement, or generated implicitly
+from a default implementation from the concept or refinement of the
+concept.}
\pnum
\addedConcepts{
@@ -3906,7 +3973,7 @@
}
\pnum
-\addedConcepts{
+\removedCCC{
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
@@ -3915,22 +3982,27 @@
\pnum
\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
+ synonym for the }\changedCCC{set of entities (possibly satisfier members) that
+ satisfies }{entity that satisfies} \addedConcepts{the requirement.}
+ \addedCC{That entity is said to be the \mbox{\techterm{satisfier}} of
+ the requirement member.}
+ Each requirement member is visible during
qualified name lookup (\mbox{\ref{concept.qual}}).}
\pnum
-\addedConcepts{
+\removedCCC{
A satisfier member shall satisfy
- (\mbox{\ref{iconcept.map.fct}}, \mbox{\ref{iconcept.map.assoc}}) at
+ (\mbox{\ref{concept.map.fct}}, \mbox{\ref{concept.map.assoc}}) at
least one requirement member of its enclosing concept map or at least
- one unsatisfied requirement member from a refined concept map. A
- satisfier member cannot be found by any form of name lookup
- (\mbox{\ref{basic.lookup}}). }
+ one unsatisfied requirement member from a refined concept map.}
+ \changedCCC{ A satisfier member}{
+ A member that satisfies a requirement member}
+ \addedConcepts{cannot be found by any form of name lookup
+ (\mbox{\ref{basic.lookup}}).}
\pnum
\addedConcepts{
- A concept map archetype (\mbox{\ref{temp.archetype}}) does not contain
+ A concept map archetype (\mbox{\ref{temp.archetype}}) \changedCCC{does not contain
any requirement members or satisfier members.
The set of members of a concept map archetype is the set of associated
functions, associated types and associated}
@@ -3940,7 +4012,8 @@
concept arguments of the concept map archetype. Within a constrained
template, these members are treated as if they were real functions,
types and templates for the purposes of syntactic and semantic
- analysis.}
+ analysis.}{is considered to have satisfiers (generated from the
+ concept) for each of its requirement members.}
\pnum
\addedConcepts{Concept maps shall satisfy every associated function (\mbox{\ref{concept.fct}}),
@@ -4897,14 +4970,14 @@
\additemConcepts{a late-checked block (\mbox{\ref{stmt.late}}),}
\additemConcepts{a default template argument in a
\mbox{\techterm{template-parameter}},}
- \additemConcepts{a default argument in a
- \mbox{\techterm{parameter-declaration}}}\addedConcepts{, unless that
+ \removedCCC{a default argument in a
+ \mbox{\techterm{parameter-declaration}}}\removedCCC{, unless that
default argument occurs within a local class
(\mbox{\ref{class.local}}),}
- \additemConcepts{the \mbox{\techterm{requires-clause}},
+ \removedCCC{the \mbox{\techterm{requires-clause}},
\mbox{\techterm{type-specifier}}, and \mbox{\techterm{declarator}}
of a constrained member (\mbox{\ref{class.mem}}), and}
- \additemConcepts{a member template of a constrained template
+ \removedCCC{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}}
@@ -5160,6 +5233,15 @@
no result.}
\pnum
+\addedCC{When concept map lookup is performed during template argument
+ deductdion formed during partial ordering
+ (\mbox{\ref{temp.deduct.partial}}),
+ \mbox{\tcode{Q}} is defined as
+ the ordered sequence consisting of only one element where S
+ is the set of concept map archetypes synthesized from the requirements
+ of the argument template
+ (\mbox{\ref{temp.func.order}},\mbox{\ref{temp.deduct.partial}}).
+ }
\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
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