re PR libstdc++/67066 (libstdc++-v3/src/filesystem/dir.cc fails to compile with ...
authorJonathan Wakely <jwakely@redhat.com>
Tue, 18 Aug 2015 18:04:32 +0000 (19:04 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 18 Aug 2015 18:04:32 +0000 (19:04 +0100)
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.

From-SVN: r226984

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 0753951ef72bfd7b777cb2d0292664db75555af6..fed9a28cb3784424290a8bc68ec7625791ff567b 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 883eb5a7721edfaccdc8a1622061275c29c0f39f..df7f22f7fcdc41de3290bec396eb1a4526b529a1 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 251c70e9da37a293b46457bce10fcfe36b0771c9..565d75e3e25f8388f676c3a0c08fe5a1a5e829ba 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 4ec871f1127193a8d9eacc234a97733dba37e608..9052ce64a0cc8889cff87674467e16ee5c749a92 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 a76b80c7bc03c8f948266a807f54a3b4d82df955..2f558d2b7d7d94d9dce44169e974e08db3909429 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 99206e9fde9c8cae8a46e18c2740fa4c27efc6bc..88ed2e28057f95657c995655664652578f8e4049 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 50570efbfa70a5e02bee58dd64a07b7ffc12bbca..f674245b30dba7adb8df96ace1a36cc79e9828bd 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 0ed212e4307e562312bffc0db6dfcf43708c0c04..09dd6118a7a72197be51a75b17f698ddbb1708a6 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 8407a153f069887a8442cf01c8b71eb881d22d9f..305d44651786196cc269c6b30fecbce78d179f3e 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;