testsuite_containers.h (forward_members_unordered<>::forward_members_unordered (const value_type&)): Add local_iterator pre and post increment checks.

2018-10-20  François Dumont  <fdumont@gcc.gnu.org>

	* 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
This commit is contained in:
François Dumont 2018-10-20 20:00:45 +00:00
parent be515b4ce0
commit f65c0c735e
3 changed files with 21 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2018-10-20 François Dumont <fdumont@gcc.gnu.org>
* 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 <jwakely@redhat.com>
* testsuite/23_containers/array/requirements/explicit_instantiation/

View File

@ -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.

View File

@ -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<typename _Tp>
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<typename _Iterator>
struct iterator_concept_checks<_Iterator, false,