From f65c0c735ee8abb8669193571a491fb407bac11d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Dumont?= Date: Sat, 20 Oct 2018 20:00:45 +0000 Subject: [PATCH] testsuite_containers.h (forward_members_unordered<>::forward_members_unordered (const value_type&)): Add local_iterator pre and post increment checks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2018-10-20 François Dumont * testsuite/util/testsuite_containers.h (forward_members_unordered<>::forward_members_unordered (const value_type&)): Add local_iterator pre and post increment checks. * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 new symbol. From-SVN: r265344 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/config/abi/pre/gnu.ver | 1 + .../testsuite/util/testsuite_containers.h | 17 +++++++++++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0399ec68209..438206b33a8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2018-10-20 François Dumont + + * testsuite/util/testsuite_containers.h + (forward_members_unordered<>::forward_members_unordered + (const value_type&)): Add local_iterator pre and post increment checks. + * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 new symbol. + 2018-10-19 Jonathan Wakely * testsuite/23_containers/array/requirements/explicit_instantiation/ diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index f90ead30dd1..e8cd286ef0c 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -2054,6 +2054,7 @@ GLIBCXX_3.4.26 { # std::basic_filebuf::open(const wchar_t*, openmode) _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4openEPKwSt13_Ios_Openmode; + _ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb; } GLIBCXX_3.4.25; # Symbols in the support library (libsupc++) have their own tag. diff --git a/libstdc++-v3/testsuite/util/testsuite_containers.h b/libstdc++-v3/testsuite/util/testsuite_containers.h index eadd43768d2..250dfda668d 100644 --- a/libstdc++-v3/testsuite/util/testsuite_containers.h +++ b/libstdc++-v3/testsuite/util/testsuite_containers.h @@ -176,11 +176,12 @@ namespace __gnu_test typename = typename std::iterator_traits<_Iterator>::iterator_category> struct iterator_concept_checks; +#if __cplusplus >= 201103L // DR 691. template struct forward_members_unordered { - forward_members_unordered(typename _Tp::value_type& v) + forward_members_unordered(const typename _Tp::value_type& v) { // Make sure that even if rel_ops is injected there is no ambiguity // when comparing iterators. @@ -196,12 +197,20 @@ namespace __gnu_test assert( container.cbegin(0) == container.begin(0) ); assert( container.cend(0) == container.end(0) ); - const typename test_type::size_type bn = container.bucket(1); - assert( container.cbegin(bn) != container.cend(bn) ); - assert( container.cbegin(bn) != container.end(bn) ); + const auto bn = container.bucket(1); + auto clit = container.cbegin(bn); + assert( clit != container.cend(bn) ); + assert( clit != container.end(bn) ); + assert( clit++ == container.cbegin(bn) ); + assert( clit == container.end(bn) ); + + clit = container.cbegin(bn); + assert( ++clit == container.cend(bn) ); + assert( container.begin(bn) != container.cend(bn) ); } }; +#endif template struct iterator_concept_checks<_Iterator, false,