Boost logo

Boost-Commit :

From: dgregor_at_[hidden]
Date: 2008-08-21 15:40:48


Author: dgregor
Date: 2008-08-21 15:40:48 EDT (Thu, 21 Aug 2008)
New Revision: 48284
URL: http://svn.boost.org/trac/boost/changeset/48284

Log:
Make references to constrained members type-dependent
Text files modified:
   sandbox/committee/concepts/wording/wording.tex | 62 +++++++++++++++++++++++++++++++++++----
   1 files changed, 55 insertions(+), 7 deletions(-)

Modified: sandbox/committee/concepts/wording/wording.tex
==============================================================================
--- sandbox/committee/concepts/wording/wording.tex (original)
+++ sandbox/committee/concepts/wording/wording.tex 2008-08-21 15:40:48 EDT (Thu, 21 Aug 2008)
@@ -103,12 +103,23 @@
 \item N2654=08-0161: Allocator Concepts (Revision 1)
 \end{itemize}
 
-% To be updated:
-%
-% \section*{Changes from N2710}
-% \begin{itemize}
-% \item
-% \end{itemize}
+\section*{Changes from N2710}
+\begin{itemize}
+\item Made an expression that uses a constrained member in the current
+ instantiation a type-dependent expression
+ (\ref{temp.dep.expr}). This change is required to properly delay
+ type-checking of, e.g., unconstrained templates that have
+ constrained members:
+\begin{codeblock}
+template<typename T>
+struct list {
+ requires C<T> void f(int);
+
+ void g() { f(17); } // ``f'' is type-dependent, because it might or
+ // might not exist in the instantiation.
+};
+\end{codeblock}
+\end{itemize}
 
 \section*{Typographical conventions}
 Within the proposed wording, text that has been added
@@ -1373,7 +1384,7 @@
         \terminal{=}\ constant-expression
 \end{bnf}
 
-\noindent\editorial{Add the following new paragraphs to 9 [class]}
+\noindent\editorial{Add the following new paragraphs to 9.2 [class.mem]}
 \setcounter{Paras}{18}
 \pnum
 \addedConcepts{A non-template \mbox{\techterm{member-declaration}}
@@ -3097,6 +3108,43 @@
   determines whether the \mbox{\techterm{qualified-id}} refers to a
   type or a value.}
 
+\setcounter{subsection}{1}
+\rSec2[temp.dep]{Dependent names}
+
+\setcounter{subsubsection}{1}
+\rSec3[temp.dep.expr]{Type-dependent expressions}
+
+\setcounter{Paras}{2}
+\pnum
+An
+\techterm{id-expression}\
+is type-dependent if it contains:
+
+\begin{itemize}
+\item
+an
+\techterm{identifier}\
+that was declared with a dependent type,
+\item
+a
+\techterm{template-id}\
+that is dependent,
+\item
+a
+\techterm{conversion-function-id}\
+that specifies a dependent type,
+\item
+a
+\techterm{nested-name-specifier}\
+or a
+\techterm{qualified-id}\
+that names a member of an unknown specialization.
+
+\additemCC{an \mbox{\techterm{identifier}}, \mbox{\techterm{nested-name-specifier}}, or a \mbox{\techterm{qualified-id}} that names a
+member of the current instantiation that is a constrained member
+(\mbox{\ref{class.mem}}).}
+\end{itemize}
+
 
 \setcounter{subsection}{2}
 \rSec2[temp.nondep]{Non-dependent names}


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