aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2015-08-18 19:04:32 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2015-08-18 19:04:32 +0100
commit4c2b10d6a487ab040398152bf5326741432ae762 (patch)
tree852a218c29f9f79d623d2038fb7b1248bd7d0277 /libstdc++-v3
parentf6e93c21e78ccc4e0427ccd4c5cf4500e2dce3e3 (diff)
downloadgcc-4c2b10d6a487ab040398152bf5326741432ae762.zip
gcc-4c2b10d6a487ab040398152bf5326741432ae762.tar.gz
gcc-4c2b10d6a487ab040398152bf5326741432ae762.tar.bz2
re PR libstdc++/67066 (libstdc++-v3/src/filesystem/dir.cc fails to compile with --enable-concept-checks)
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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog12
-rw-r--r--libstdc++-v3/doc/html/manual/concept_checking.html5
-rw-r--r--libstdc++-v3/doc/html/manual/configure.html8
-rw-r--r--libstdc++-v3/doc/html/manual/status.html2
-rw-r--r--libstdc++-v3/doc/xml/manual/configure.xml8
-rw-r--r--libstdc++-v3/doc/xml/manual/diagnostics.xml5
-rw-r--r--libstdc++-v3/include/bits/stl_deque.h2
-rw-r--r--libstdc++-v3/include/bits/stl_stack.h2
-rw-r--r--libstdc++-v3/include/bits/stl_vector.h2
9 files changed, 35 insertions, 11 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0753951..fed9a28 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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
diff --git a/libstdc++-v3/doc/html/manual/concept_checking.html b/libstdc++-v3/doc/html/manual/concept_checking.html
index 883eb5a..df7f22f 100644
--- a/libstdc++-v3/doc/html/manual/concept_checking.html
+++ b/libstdc++-v3/doc/html/manual/concept_checking.html
@@ -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.
diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html
index 251c70e..565d75e 100644
--- a/libstdc++-v3/doc/html/manual/configure.html
+++ b/libstdc++-v3/doc/html/manual/configure.html
@@ -169,10 +169,12 @@
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
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index 4ec871f..9052ce6 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -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
diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml
index a76b80c..2f558d2 100644
--- a/libstdc++-v3/doc/xml/manual/configure.xml
+++ b/libstdc++-v3/doc/xml/manual/configure.xml
@@ -288,10 +288,12 @@
<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>
diff --git a/libstdc++-v3/doc/xml/manual/diagnostics.xml b/libstdc++-v3/doc/xml/manual/diagnostics.xml
index 99206e9..88ed2e2 100644
--- a/libstdc++-v3/doc/xml/manual/diagnostics.xml
+++ b/libstdc++-v3/doc/xml/manual/diagnostics.xml
@@ -114,8 +114,9 @@
<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.
diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h
index 50570ef..f674245 100644
--- a/libstdc++-v3/include/bits/stl_deque.h
+++ b/libstdc++-v3/include/bits/stl_deque.h
@@ -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;
diff --git a/libstdc++-v3/include/bits/stl_stack.h b/libstdc++-v3/include/bits/stl_stack.h
index 0ed212e..09dd611 100644
--- a/libstdc++-v3/include/bits/stl_stack.h
+++ b/libstdc++-v3/include/bits/stl_stack.h
@@ -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>
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index 8407a15..305d446 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -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;