PR libstdc++/67066
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Aug 2015 18:04:32 +0000 (18:04 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Aug 2015 18:04:32 +0000 (18:04 +0000)
* doc/xml/manual/configure.xml (manual.intro.setup.configure): Add
caveats for --enable-concept-checks. Improve link text.
* doc/xml/manual/diagnostics.xml (std.diagnostics.concept_checking):
Clarify caveats.
* doc/html/*: Regenerate.
* include/bits/stl_deque.h (deque): Only use concept checks in C++03.
* include/bits/stl_stack.h (stack): Likewise.
* include/bits/stl_vector.h (vector): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226984 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/doc/html/manual/concept_checking.html
libstdc++-v3/doc/html/manual/configure.html
libstdc++-v3/doc/html/manual/status.html
libstdc++-v3/doc/xml/manual/configure.xml
libstdc++-v3/doc/xml/manual/diagnostics.xml
libstdc++-v3/include/bits/stl_deque.h
libstdc++-v3/include/bits/stl_stack.h
libstdc++-v3/include/bits/stl_vector.h

index 0753951..fed9a28 100644 (file)
@@ -1,3 +1,15 @@
+2015-08-18  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/67066
+       * doc/xml/manual/configure.xml (manual.intro.setup.configure): Add
+       caveats for --enable-concept-checks. Improve link text.
+       * doc/xml/manual/diagnostics.xml (std.diagnostics.concept_checking):
+       Clarify caveats.
+       * doc/html/*: Regenerate.
+       * include/bits/stl_deque.h (deque): Only use concept checks in C++03.
+       * include/bits/stl_stack.h (stack): Likewise.
+       * include/bits/stl_vector.h (vector): Likewise.
+
 2015-08-14  Jonathan Wakely  <jwakely@redhat.com>
 
        * include/experimental/any (any::operator=(const any&)): Move check
index 883eb5a..df7f22f 100644 (file)
@@ -35,8 +35,9 @@
      <code class="literal">-D_GLIBCXX_CONCEPT_CHECKS</code>.
  </p><p>
    Please note that the checks are based on the requirements in the original
-   C++ standard, some of which have changed in the new C++11 revision.
-   Additionally, some correct code might be rejected by the concept checks,
+   C++ standard, many of which were relaxed in the C++11 standard and so valid
+   C++11 code may be incorrectly rejected by the concept checks.  Additionally,
+   some correct C++03 code might be rejected by the concept checks,
    for example template argument types may need to be complete when used in
    a template definition, rather than at the point of instantiation.
    There are no plans to address these shortcomings.
index 251c70e..565d75e 100644 (file)
        Mostly useful together with shared memory allocators, see PR
        libstdc++/16612 for details.
      </p></dd><dt><span class="term"><code class="code">--enable-concept-checks</code></span></dt><dd><p>This turns on additional compile-time checks for instantiated
-       library templates, in the form of specialized templates,
-       <a class="link" href="concept_checking.html" title="Concept Checking">described here</a>.  They
+       library templates, in the form of specialized templates described in
+        the <a class="link" href="concept_checking.html" title="Concept Checking">Concept
+        Checking</a> section.  They
        can help users discover when they break the rules of the STL, before
-       their programs run.
+       their programs run. These checks are based on C++03 rules and some of
+       them are not compatible with correct C++11 code.
      </p></dd><dt><span class="term"><code class="code">--enable-symvers[=style]</code></span></dt><dd><p>In 3.1 and later, tries to turn on symbol versioning in the
        shared library (if a shared library has been
        requested). Values for 'style' that are currently supported
index 4ec871f..9052ce6 100644 (file)
@@ -630,4 +630,4 @@ particular release.
       </td></tr></tbody></table></div></div><br class="table-break" /></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part I. 
   Introduction
   
- </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> License</td></tr></table></div></body></html>
+ </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> License</td></tr></table></div></body></html>
\ No newline at end of file
index a76b80c..2f558d2 100644 (file)
 
  <varlistentry><term><code>--enable-concept-checks</code></term>
  <listitem><para>This turns on additional compile-time checks for instantiated
-       library templates, in the form of specialized templates,
-       <link linkend="std.diagnostics.concept_checking">described here</link>.  They
+       library templates, in the form of specialized templates described in
+        the <link linkend="std.diagnostics.concept_checking">Concept
+        Checking</link> section.  They
        can help users discover when they break the rules of the STL, before
-       their programs run.
+       their programs run. These checks are based on C++03 rules and some of
+       them are not compatible with correct C++11 code.
      </para>
  </listitem></varlistentry>
 
index 99206e9..88ed2e2 100644 (file)
 
  <para>
    Please note that the checks are based on the requirements in the original
-   C++ standard, some of which have changed in the new C++11 revision.
-   Additionally, some correct code might be rejected by the concept checks,
+   C++ standard, many of which were relaxed in the C++11 standard and so valid
+   C++11 code may be incorrectly rejected by the concept checks.  Additionally,
+   some correct C++03 code might be rejected by the concept checks,
    for example template argument types may need to be complete when used in
    a template definition, rather than at the point of instantiation.
    There are no plans to address these shortcomings.
index 50570ef..f674245 100644 (file)
@@ -829,7 +829,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
     {
       // concept requirements
       typedef typename _Alloc::value_type        _Alloc_value_type;
+#if __cplusplus < 201103L
       __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+#endif
       __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
 
       typedef _Deque_base<_Tp, _Alloc>                 _Base;
index 0ed212e..09dd611 100644 (file)
@@ -100,8 +100,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     {
       // concept requirements
       typedef typename _Sequence::value_type _Sequence_value_type;
+#if __cplusplus < 201103L
       __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
       __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept)
+#endif
       __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
 
       template<typename _Tp1, typename _Seq1>
index 8407a15..305d446 100644 (file)
@@ -215,7 +215,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
     {
       // Concept requirements.
       typedef typename _Alloc::value_type                _Alloc_value_type;
+#if __cplusplus < 201103L
       __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
+#endif
       __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
       
       typedef _Vector_base<_Tp, _Alloc>                         _Base;