Boost logo

Boost-Commit :

From: dgregor_at_[hidden]
Date: 2008-07-28 08:51:48

Author: dgregor
Date: 2008-07-28 08:51:48 EDT (Mon, 28 Jul 2008)
New Revision: 47851

Finished N2710
Text files modified:
   sandbox/committee/concepts/wording/macros.tex | 4 ++++
   sandbox/committee/concepts/wording/wording.tex | 36 +++++++++++++++---------------------
   2 files changed, 19 insertions(+), 21 deletions(-)

Modified: sandbox/committee/concepts/wording/macros.tex
--- sandbox/committee/concepts/wording/macros.tex (original)
+++ sandbox/committee/concepts/wording/macros.tex 2008-07-28 08:51:48 EDT (Mon, 28 Jul 2008)
@@ -259,6 +259,10 @@
+%% Rationale
 %% Library function descriptions

Modified: sandbox/committee/concepts/wording/wording.tex
--- sandbox/committee/concepts/wording/wording.tex (original)
+++ sandbox/committee/concepts/wording/wording.tex 2008-07-28 08:51:48 EDT (Mon, 28 Jul 2008)
@@ -62,7 +62,7 @@
 Jeremy Siek, University of Colorado at Boulder
-\par\noindent Document number: D2710=08-0220\vspace{-6pt}
+\par\noindent Document number: N2710=08-0220\vspace{-6pt}
 \par\noindent Revises document number: N2676=08-0186 \vspace{-6pt}
 \par\noindent Date: \today\vspace{-6pt}
 \par\noindent Project: Programming Language \Cpp{}, Core Working Group\vspace{-6pt}
@@ -927,28 +927,22 @@
-a late-checked block should generally be used only when certain suitably
+a late-checked block should be used only when certain suitably
 constrained versions of templates are not yet available for use from
 within the body of a constrained template definition and the only viable
 alternative is the use of an unconstrained template.
-\mbox{\tcode{late\_check}} is regarded as an evolutionary tool only,
-and it was added to the language only after several debates and careful
-In the end,
- it was decided that migrating a template library toward the use of
- concepts would be prohibitively difficult in too many cases without
- the ability to use an unconstrained template from within a constrained
- template.
-So there are times when \mbox{\tcode{late\_check}} is a ``necessary
-But it is still
-``evil'' (because it can lead to dangers associated with ``dropped concept
-maps'' as in the \mbox{\tcode{Semigroup}} example above---not to mention
-the general loss of type-checking).
-Therefore users are encouraged to remove a use of
-\mbox{\tcode{late\_check}} when it is reasonable to do so.
+\mbox{\tcode{late\_check}} is regarded as an evolutionary tool,
+to mitigate the cost of migrating a template library to use concepts
+when the library is based on unconstrained templates that cannot be
+constrained at that time. The use of \mbox{\tcode{late\_check}}
+involves a loss of type-checking and can circumvent the syntax
+adaptation capabilities provided by concept maps, leading to
+instantiations that will silently invoke different operations than
+expected, as in the use of \mbox{\tcode{+}} in the
+\mbox{\tcode{add}} example above. For these reasons, the use of
+\mbox{\tcode{late\_check}} should be avoided whenever possible.
@@ -5578,7 +5572,7 @@
   template, or nested class cannot prevent the expression of
   additional requirements on template parameters from enclosing
   scopes. \mbox{\exitnote} \mbox{\enterexample} Given:}
 concept C1<typename T> { }
 concept C2<typename T> { }

Boost-Commit list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at