diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-06-05 17:17:53 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-06-05 17:17:53 +0000 |
commit | d51560f9afc5c8a826bcfa6fc90a96156b623559 (patch) | |
tree | 95282cdec9ac1f2fda9799f8018f41d54391ec08 | |
parent | bed86f06ac37896c9a54bd90ee10e215143d7c67 (diff) | |
download | gcc-d51560f9afc5c8a826bcfa6fc90a96156b623559.tar.gz |
* doc/xml/manual/status_cxx2017.xml: Update status tables.
* doc/html/manual/*: Regenerate.
* include/std/type_traits (bool_constant): Define.
* testsuite/20_util/bool_constant/requirements.cc: New.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224160 138bc75d-0d04-0410-961f-82ee72b054a4
8 files changed, 216 insertions, 6 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0badc6db107..fe8957637b5 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,15 @@ 2015-06-05 Jonathan Wakely <jwakely@redhat.com> + * doc/xml/manual/status_cxx2017.xml: Update status tables. + * doc/html/manual/*: Regenerate. + * include/std/type_traits (bool_constant): Define. + * testsuite/20_util/bool_constant/requirements.cc: New. + * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error. + * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: + Likewise. + * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: + Likewise. + * include/std/shared_mutex (__shared_mutex_pthread, __shared_mutex_cv): New helper types implementing the shared mutex requirements. diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html index 141ec5f8287..6d304dcb7fb 100644 --- a/libstdc++-v3/doc/html/manual/status.html +++ b/libstdc++-v3/doc/html/manual/status.html @@ -508,7 +508,31 @@ not in any particular release. <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf" target="_top"> N4280 </a> - </td><td align="left">Non-member size() and more</td><td align="left">N</td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table.cxx1z_ts_status"></a><p class="title"><strong>Table 1.6. C++ Technical Specifications Implementation Status</strong></p><div class="table-contents"><table summary="C++ Technical Specifications Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"> + </td><td align="left">Non-member size() and more</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html" target="_top"> + N4387 + </a> + </td><td align="left"> + LWG 2228: Missing SFINAE rule in unique_ptr templated assignment + </td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387.html" target="_top"> + N4387 + </a> + </td><td align="left"> Improving pair and tuple, revision 3 </td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html" target="_top"> + N4389 + </a> + </td><td align="left"> Wording for bool_constant, revision 1 </td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html" target="_top"> + N4508 + </a> + </td><td align="left">A proposal to add shared_mutex (untimed) (Revision 4)</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html" target="_top"> + N4510 + </a> + </td><td align="left"> + Minimal incomplete type support for standard containers, revision 4 + </td><td align="left">Y</td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table.cxx1z_ts_status"></a><p class="title"><strong>Table 1.6. C++ Technical Specifications Implementation Status</strong></p><div class="table-contents"><table summary="C++ Technical Specifications Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"> <a class="link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4076.html" target="_top"> N4076 </a> @@ -528,7 +552,27 @@ not in any particular release. <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4282.pdf" target="_top"> N4282 </a> - </td><td align="left">The World's Dumbest Smart Pointer</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p> + </td><td align="left">The World's Dumbest Smart Pointer</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr bgcolor="#C8B0B0"><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html" target="_top"> + N4388 + </a> + </td><td align="left">Const-Propagating Wrapper</td><td align="left">N</td><td align="left">Library Fundamentals 2 TS</td></tr><tr bgcolor="#C8B0B0"><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4391.html" target="_top"> + N4391 + </a> + </td><td align="left"> <code class="code">make_array</code>, revision 4 </td><td align="left">N</td><td align="left">Library Fundamentals 2 TS</td></tr><tr bgcolor="#C8B0B0"><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf" target="_top"> + N4502 + </a> + </td><td align="left"> Support for the C++ Detection Idiom, V2 </td><td align="left">N</td><td align="left">Library Fundamentals 2 TS</td></tr><tr bgcolor="#C8B0B0"><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4519.pdf" target="_top"> + N4519 + </a> + </td><td align="left"> Source-Code Information Capture </td><td align="left">N</td><td align="left">Library Fundamentals 2 TS</td></tr><tr bgcolor="#C8B0B0"><td align="left"> + <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4521.html" target="_top"> + N4521 + </a> + </td><td align="left"> Merge Fundamentals V1 into V2 </td><td align="left">N</td><td align="left">Library Fundamentals 2 TS</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p> This table is based on the table of contents of ISO/IEC DTR 19768 Doc No: N1836=05-0096 Date: 2005-06-24 Draft Technical Report on C++ Library Extensions diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml index 55f3cd208fd..d110572e57a 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml @@ -162,6 +162,67 @@ not in any particular release. <entry/> </row> + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html"> + N4387 + </link> + </entry> + <entry> + LWG 2228: Missing SFINAE rule in unique_ptr templated assignment + </entry> + <entry>N</entry> + <entry/> + </row> + + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387.html"> + N4387 + </link> + </entry> + <entry> Improving pair and tuple, revision 3 </entry> + <entry>N</entry> + <entry/> + </row> + + <row> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html"> + N4389 + </link> + </entry> + <entry> Wording for bool_constant, revision 1 </entry> + <entry>Y</entry> + <entry/> + </row> + + <row> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html"> + N4508 + </link> + </entry> + <entry>A proposal to add shared_mutex (untimed) (Revision 4)</entry> + <entry>Y</entry> + <entry/> + </row> + + <row> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html"> + N4510 + </link> + </entry> + <entry> + Minimal incomplete type support for standard containers, revision 4 + </entry> + <entry>Y</entry> + <entry/> + </row> + </tbody> </tgroup> </table> @@ -241,6 +302,69 @@ not in any particular release. <entry>Library Fundamentals 2 TS</entry> </row> + + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html"> + N4388 + </link> + </entry> + <entry>Const-Propagating Wrapper</entry> + <entry>N</entry> + <entry>Library Fundamentals 2 TS</entry> + </row> + + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4391.html"> + N4391 + </link> + </entry> + <entry> <code>make_array</code>, revision 4 </entry> + <entry>N</entry> + <entry>Library Fundamentals 2 TS</entry> + </row> + + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf"> + N4502 + </link> + </entry> + <entry> Support for the C++ Detection Idiom, V2 </entry> + <entry>N</entry> + <entry>Library Fundamentals 2 TS</entry> + </row> + + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4519.pdf"> + N4519 + </link> + </entry> + <entry> Source-Code Information Capture </entry> + <entry>N</entry> + <entry>Library Fundamentals 2 TS</entry> + </row> + + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4521.html"> + N4521 + </link> + </entry> + <entry> Merge Fundamentals V1 into V2 </entry> + <entry>N</entry> + <entry>Library Fundamentals 2 TS</entry> + </row> + + + </tbody> </tgroup> </table> diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 2eae61bb8f4..e09c856c934 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -92,6 +92,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<bool __v> using __bool_constant = integral_constant<bool, __v>; +#if __cplusplus > 201402L +// TODO: #define __cpp_lib_bool_constant 201505 + template<bool __v> + using bool_constant = integral_constant<bool, __v>; +#endif + // Meta programming helper types. template<bool, typename, typename> diff --git a/libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc b/libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc new file mode 100644 index 00000000000..ddc02df8115 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc @@ -0,0 +1,26 @@ +// Copyright (C) 2015 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++17" } +// { dg-do compile } + +#include <type_traits> + +static_assert( std::is_same<std::bool_constant<true>, std::true_type>::value, + "bool_constant<true> is true_type"); +static_assert( std::is_same<std::bool_constant<false>, std::false_type>::value, + "bool_constant<false> is false_type"); diff --git a/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc b/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc index 263fff2d4df..2723e5c6689 100644 --- a/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc +++ b/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc @@ -19,7 +19,7 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. -// { dg-error "static assertion failed" "" { target *-*-* } 2203 } +// { dg-error "static assertion failed" "" { target *-*-* } 2209 } #include <utility> diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc index 5fbf311516a..507930d03d2 100644 --- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc +++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc @@ -48,4 +48,4 @@ void test01() // { dg-error "required from here" "" { target *-*-* } 40 } // { dg-error "required from here" "" { target *-*-* } 42 } -// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1868 } +// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1874 } diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc index 4e54b1842d7..608fd1a15f2 100644 --- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc +++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc @@ -48,5 +48,5 @@ void test01() // { dg-error "required from here" "" { target *-*-* } 40 } // { dg-error "required from here" "" { target *-*-* } 42 } -// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1764 } -// { dg-error "declaration of" "" { target *-*-* } 1721 } +// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1770 } +// { dg-error "declaration of" "" { target *-*-* } 1727 } |