diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2019-10-29 17:15:04 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2019-10-29 17:15:04 +0000 |
commit | 9921ac3db381106b66b70d8bf99136b265ec07c3 (patch) | |
tree | e2fb7ca1695880dffcc526615078c6b4e2c71dbd | |
parent | 0ed4d40833715b0650e9ed4d561ca9ea0dacf2b1 (diff) | |
download | gcc-9921ac3db381106b66b70d8bf99136b265ec07c3.zip gcc-9921ac3db381106b66b70d8bf99136b265ec07c3.tar.gz gcc-9921ac3db381106b66b70d8bf99136b265ec07c3.tar.bz2 |
Minor improvements to testsuite iterator utilities
* testsuite/util/testsuite_iterators.h (BoundsContainer::size()): Add
new member function.
(WritableObject::operator=): Constrain with enable_if when available.
(remove_cv): Use std::remove_if when available.
(test_container::it(int)): Use size().
(test_container::size()): Use BoundsContainer::size().
From-SVN: r277578
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/util/testsuite_iterators.h | 27 |
2 files changed, 24 insertions, 10 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7bb3162..0414f12 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,12 @@ 2019-10-29 Jonathan Wakely <jwakely@redhat.com> + * testsuite/util/testsuite_iterators.h (BoundsContainer::size()): Add + new member function. + (WritableObject::operator=): Constrain with enable_if when available. + (remove_cv): Use std::remove_if when available. + (test_container::it(int)): Use size(). + (test_container::size()): Use BoundsContainer::size(). + PR libstdc++/92267 * include/bits/stl_deque.h (_Deque_iterator(const _Deque_iterator&)): Do not define as defaulted. diff --git a/libstdc++-v3/testsuite/util/testsuite_iterators.h b/libstdc++-v3/testsuite/util/testsuite_iterators.h index d9a3562..974490b 100644 --- a/libstdc++-v3/testsuite/util/testsuite_iterators.h +++ b/libstdc++-v3/testsuite/util/testsuite_iterators.h @@ -56,8 +56,11 @@ namespace __gnu_test { T* first; T* last; + BoundsContainer(T* _first, T* _last) : first(_first), last(_last) { } + + std::size_t size() const { return last - first; } }; // Simple container for holding state of a set of output iterators. @@ -66,13 +69,11 @@ namespace __gnu_test { T* incrementedto; bool* writtento; + OutputContainer(T* _first, T* _last) - : BoundsContainer<T>(_first, _last), incrementedto(_first) - { - writtento = new bool[this->last - this->first]; - for(int i = 0; i < this->last - this->first; i++) - writtento[i] = false; - } + : BoundsContainer<T>(_first, _last), incrementedto(_first), + writtento(new bool[this->size()]()) + { } ~OutputContainer() { delete[] writtento; } @@ -86,13 +87,14 @@ namespace __gnu_test public: OutputContainer<T>* SharedInfo; - WritableObject(T* ptr_in,OutputContainer<T>* SharedInfo_in): + + WritableObject(T* ptr_in, OutputContainer<T>* SharedInfo_in): ptr(ptr_in), SharedInfo(SharedInfo_in) { } #if __cplusplus >= 201103L template<class U> - void + typename std::enable_if<std::is_assignable<T&, U>::value>::type operator=(U&& new_val) { ITERATOR_VERIFY(SharedInfo->writtento[ptr - SharedInfo->first] == 0); @@ -182,10 +184,14 @@ namespace __gnu_test void operator,(const T&, const output_iterator_wrapper<U>&) = delete; #endif +#if __cplusplus >= 2011L + using std::remove_cv; +#else template<typename T> struct remove_cv { typedef T type; }; template<typename T> struct remove_cv<const T> { typedef T type; }; template<typename T> struct remove_cv<volatile T> { typedef T type; }; template<typename T> struct remove_cv<const volatile T> { typedef T type; }; +#endif /** * @brief input_iterator wrapper for pointer @@ -543,6 +549,7 @@ namespace __gnu_test struct test_container { typename ItType<T>::ContainerType bounds; + test_container(T* _first, T* _last) : bounds(_first, _last) { } @@ -556,7 +563,7 @@ namespace __gnu_test ItType<T> it(int pos) { - ITERATOR_VERIFY(pos >= 0 && pos <= (bounds.last - bounds.first)); + ITERATOR_VERIFY(pos >= 0 && pos <= size()); return ItType<T>(bounds.first + pos, &bounds); } @@ -581,7 +588,7 @@ namespace __gnu_test std::size_t size() const - { return bounds.last - bounds.first; } + { return bounds.size(); } }; } #endif |