diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2017-12-27 19:43:33 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2017-12-27 19:43:33 +0000 |
commit | c41743d0c0d498bd55c91285d5324b02bed7fb54 (patch) | |
tree | 28e606516f0b63f89bdf32341802267c3e27631a | |
parent | aefd636b3cc00e1aa37537f9fa3a8381883a1d19 (diff) | |
download | gcc-c41743d0c0d498bd55c91285d5324b02bed7fb54.zip gcc-c41743d0c0d498bd55c91285d5324b02bed7fb54.tar.gz gcc-c41743d0c0d498bd55c91285d5324b02bed7fb54.tar.bz2 |
PR libstdc++/83538 fix std::match_results<T>::reference (LWG 2306)
PR libstdc++/83538
* doc/xml/manual/intro.xml: Document LWG 2306 change.
* include/bits/regex.h (match_results::reference): Change to
non-const reference.
* testsuite/28_regex/match_results/typedefs.cc: Check types are
correct.
From-SVN: r256012
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/doc/xml/manual/intro.xml | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/regex.h | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc | 7 |
4 files changed, 23 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index bc523a0..88b6b2b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2017-12-27 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/83538 + * doc/xml/manual/intro.xml: Document LWG 2306 change. + * include/bits/regex.h (match_results::reference): Change to + non-const reference. + * testsuite/28_regex/match_results/typedefs.cc: Check types are + correct. + 2017-12-24 Michele Pezzutti <mpezz@tiscali.it> PR libstdc++/83237 diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml index 2df9c5f..03d59f9 100644 --- a/libstdc++-v3/doc/xml/manual/intro.xml +++ b/libstdc++-v3/doc/xml/manual/intro.xml @@ -968,6 +968,12 @@ requirements of the license of GCC. <code>constexpr</code> to <code>addressof</code> for C++17 and later. </para></listitem></varlistentry> + <varlistentry xml:id="manual.bugs.dr2306"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2306">2306</link>: + <emphasis><code>match_results::reference</code> should be <code>value_type&</code>, not <code>const value_type&</code></emphasis> + </term> + <listitem><para>Change typedef. + </para></listitem></varlistentry> + <varlistentry xml:id="manual.bugs.dr2313"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2313">2313</link>: <emphasis><code>tuple_size</code> should always derive from <code>integral_constant<size_t, N></code></emphasis> </term> diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h index 32e7159..74c5100 100644 --- a/libstdc++-v3/include/bits/regex.h +++ b/libstdc++-v3/include/bits/regex.h @@ -1541,7 +1541,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 //@{ typedef sub_match<_Bi_iter> value_type; typedef const value_type& const_reference; - typedef const_reference reference; + typedef value_type& reference; typedef typename _Base_type::const_iterator const_iterator; typedef const_iterator iterator; typedef typename __iter_traits::difference_type difference_type; diff --git a/libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc b/libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc index fb39b5b..62c4cf7 100644 --- a/libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc +++ b/libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc @@ -39,4 +39,11 @@ test01() typedef mr::allocator_type allocator_type; typedef mr::char_type char_type; typedef mr::string_type string_type; + + static_assert(std::is_same<value_type, std::sub_match<char*>>::value, ""); + static_assert(std::is_same<const_reference, const value_type&>::value, ""); + static_assert(std::is_same<reference, value_type&>::value, "DR 2306"); + static_assert(std::is_same<const_iterator, iterator>::value, ""); + static_assert(std::is_same<char_type, char>::value, ""); + static_assert(std::is_same<string_type, std::string>::value, ""); } |