diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2015-08-18 19:04:32 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2015-08-18 19:04:32 +0100 |
commit | 4c2b10d6a487ab040398152bf5326741432ae762 (patch) | |
tree | 852a218c29f9f79d623d2038fb7b1248bd7d0277 /libstdc++-v3 | |
parent | f6e93c21e78ccc4e0427ccd4c5cf4500e2dce3e3 (diff) | |
download | gcc-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/ChangeLog | 12 | ||||
-rw-r--r-- | libstdc++-v3/doc/html/manual/concept_checking.html | 5 | ||||
-rw-r--r-- | libstdc++-v3/doc/html/manual/configure.html | 8 | ||||
-rw-r--r-- | libstdc++-v3/doc/html/manual/status.html | 2 | ||||
-rw-r--r-- | libstdc++-v3/doc/xml/manual/configure.xml | 8 | ||||
-rw-r--r-- | libstdc++-v3/doc/xml/manual/diagnostics.xml | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_deque.h | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_stack.h | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_vector.h | 2 |
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; |