Commit 247f410b by Jonathan Wakely

libstdc++: Remove std::span::cbegin and std::span::cend (LWG 3320)

	* include/std/span (span::const_iterator, span::const_reverse_iterator)
	(span::cbegin(), span::cend(), span::crbegin(), span::crend()):
	Remove (LWG 3320).
	* testsuite/23_containers/span/everything.cc: Replace uses of cbegin
	and cend.
	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
	Likewise.
	* testsuite/20_util/specialized_algorithms/uninitialized_copy/
	constrained.cc: Likewise.
	* testsuite/20_util/specialized_algorithms/
	uninitialized_default_construct/constrained.cc: Likewise.
	* testsuite/20_util/specialized_algorithms/uninitialized_fill/
	constrained.cc: Likewise.
	* testsuite/20_util/specialized_algorithms/uninitialized_move/
	constrained.cc: Likewise.
	* testsuite/20_util/specialized_algorithms/
	uninitialized_value_construct/constrained.cc: Likewise.
parent f91aa3e6
2020-02-19 Jonathan Wakely <jwakely@redhat.com> 2020-02-19 Jonathan Wakely <jwakely@redhat.com>
* include/std/span (span::const_iterator, span::const_reverse_iterator)
(span::cbegin(), span::cend(), span::crbegin(), span::crend()):
Remove (LWG 3320).
* testsuite/23_containers/span/everything.cc: Replace uses of cbegin
and cend.
* testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
Likewise.
* testsuite/20_util/specialized_algorithms/uninitialized_copy/
constrained.cc: Likewise.
* testsuite/20_util/specialized_algorithms/
uninitialized_default_construct/constrained.cc: Likewise.
* testsuite/20_util/specialized_algorithms/uninitialized_fill/
constrained.cc: Likewise.
* testsuite/20_util/specialized_algorithms/uninitialized_move/
constrained.cc: Likewise.
* testsuite/20_util/specialized_algorithms/
uninitialized_value_construct/constrained.cc: Likewise.
* include/bits/range_access.h (range_size_t): Define alias template. * include/bits/range_access.h (range_size_t): Define alias template.
* include/std/ranges (all_view): Rename to views::all_t (LWG 3335). * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
* testsuite/std/ranges/adaptors/filter.cc: Adjust to new name. * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
......
...@@ -141,9 +141,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -141,9 +141,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
using reference = element_type&; using reference = element_type&;
using const_reference = const element_type&; using const_reference = const element_type&;
using iterator = __gnu_cxx::__normal_iterator<pointer, span>; using iterator = __gnu_cxx::__normal_iterator<pointer, span>;
using const_iterator = __gnu_cxx::__normal_iterator<const_pointer, span>;
using reverse_iterator = std::reverse_iterator<iterator>; using reverse_iterator = std::reverse_iterator<iterator>;
using const_reverse_iterator = std::reverse_iterator<const_iterator>;
// member constants // member constants
static constexpr size_t extent = _Extent; static constexpr size_t extent = _Extent;
...@@ -297,34 +295,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -297,34 +295,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
begin() const noexcept begin() const noexcept
{ return iterator(this->_M_ptr); } { return iterator(this->_M_ptr); }
constexpr const_iterator
cbegin() const noexcept
{ return const_iterator(this->_M_ptr); }
constexpr iterator constexpr iterator
end() const noexcept end() const noexcept
{ return iterator(this->_M_ptr + this->size()); } { return iterator(this->_M_ptr + this->size()); }
constexpr const_iterator
cend() const noexcept
{ return const_iterator(this->_M_ptr + this->size()); }
constexpr reverse_iterator constexpr reverse_iterator
rbegin() const noexcept rbegin() const noexcept
{ return reverse_iterator(this->end()); } { return reverse_iterator(this->end()); }
constexpr const_reverse_iterator
crbegin() const noexcept
{ return const_reverse_iterator(this->cend()); }
constexpr reverse_iterator constexpr reverse_iterator
rend() const noexcept rend() const noexcept
{ return reverse_iterator(this->begin()); } { return reverse_iterator(this->begin()); }
constexpr const_reverse_iterator
crend() const noexcept
{ return const_reverse_iterator(this->cbegin()); }
// subviews // subviews
template<size_t _Count> template<size_t _Count>
......
...@@ -54,7 +54,7 @@ test01() ...@@ -54,7 +54,7 @@ test01()
ranges::uninitialized_default_construct(rx); ranges::uninitialized_default_construct(rx);
VERIFY( X::count == size ); VERIFY( X::count == size );
auto i = rx.cbegin(); auto i = rx.begin();
if (k == 0) if (k == 0)
i = ranges::destroy(rx); i = ranges::destroy(rx);
else if (k == 1) else if (k == 1)
...@@ -64,7 +64,7 @@ test01() ...@@ -64,7 +64,7 @@ test01()
else else
__builtin_abort(); __builtin_abort();
VERIFY( i == rx.cend() ); VERIFY( i == rx.end() );
VERIFY( X::count == 0 ); VERIFY( X::count == 0 );
} }
} }
......
...@@ -47,7 +47,7 @@ test01(const std::vector<T> &ix) ...@@ -47,7 +47,7 @@ test01(const std::vector<T> &ix)
auto buffer = std::unique_ptr<char[]>(new char[sizeof(T)*size]); auto buffer = std::unique_ptr<char[]>(new char[sizeof(T)*size]);
std::span<T> rx((T *)buffer.get(), size); std::span<T> rx((T *)buffer.get(), size);
ranges::uninitialized_copy_result res = {ix.cbegin(), rx.cbegin()}; ranges::uninitialized_copy_result res = {ix.begin(), rx.begin()};
if (k == 0) if (k == 0)
res = ranges::uninitialized_copy(ix.begin(), ix.end(), res = ranges::uninitialized_copy(ix.begin(), ix.end(),
rx.begin(), rx.end()); rx.begin(), rx.end());
...@@ -58,33 +58,33 @@ test01(const std::vector<T> &ix) ...@@ -58,33 +58,33 @@ test01(const std::vector<T> &ix)
rx.begin(), rx.end()); rx.begin(), rx.end());
else if (k == 3) else if (k == 3)
res = ranges::uninitialized_copy(ix.begin(), ix.end(), res = ranges::uninitialized_copy(ix.begin(), ix.end(),
rx.cbegin(), rx.cend()); rx.begin(), rx.end());
else if (k == 4) else if (k == 4)
res = ranges::uninitialized_copy(ix, std::as_const(rx)); res = ranges::uninitialized_copy(ix, std::as_const(rx));
else if (k == 5) else if (k == 5)
res = ranges::uninitialized_copy_n(ix.begin(), size, res = ranges::uninitialized_copy_n(ix.begin(), size,
rx.cbegin(), rx.cend()); rx.begin(), rx.end());
else if (k == 6) else if (k == 6)
res = ranges::uninitialized_copy_n(ix.begin(), size/2, res = ranges::uninitialized_copy_n(ix.begin(), size/2,
rx.cbegin(), rx.cend()); rx.begin(), rx.end());
else if (k == 7) else if (k == 7)
res = ranges::uninitialized_copy_n(ix.begin(), size, res = ranges::uninitialized_copy_n(ix.begin(), size,
rx.cbegin(), rx.cbegin()+size/2); rx.begin(), rx.begin()+size/2);
else else
__builtin_abort(); __builtin_abort();
if (k == 6 || k == 7) if (k == 6 || k == 7)
{ {
VERIFY( ranges::distance(ix.cbegin(), res.in) == size/2 ); VERIFY( ranges::distance(ix.begin(), res.in) == size/2 );
VERIFY( ranges::distance(rx.cbegin(), res.out) == size/2 ); VERIFY( ranges::distance(rx.begin(), res.out) == size/2 );
VERIFY( ranges::equal(ix.begin(), ix.begin()+size/2, VERIFY( ranges::equal(ix.begin(), ix.begin()+size/2,
rx.begin(), rx.begin()+size/2) ); rx.begin(), rx.begin()+size/2) );
ranges::destroy(rx.begin(), rx.begin()+size/2); ranges::destroy(rx.begin(), rx.begin()+size/2);
} }
else else
{ {
VERIFY( res.in == ix.cend() ); VERIFY( res.in == ix.end() );
VERIFY( res.out == rx.cend() ); VERIFY( res.out == rx.end() );
VERIFY( ranges::equal(ix, rx) ); VERIFY( ranges::equal(ix, rx) );
ranges::destroy(rx); ranges::destroy(rx);
} }
......
...@@ -53,7 +53,7 @@ test01() ...@@ -53,7 +53,7 @@ test01()
ranges::fill(rx, t); ranges::fill(rx, t);
} }
auto i = rx.cbegin(); auto i = rx.begin();
if (k == 0) if (k == 0)
i = ranges::uninitialized_default_construct(rx.begin(), rx.end()); i = ranges::uninitialized_default_construct(rx.begin(), rx.end());
else if (k == 1) else if (k == 1)
...@@ -63,15 +63,15 @@ test01() ...@@ -63,15 +63,15 @@ test01()
else if constexpr (std::is_fundamental_v<T>) else if constexpr (std::is_fundamental_v<T>)
continue; continue;
else if (k == 3) else if (k == 3)
i = ranges::uninitialized_default_construct(rx.cbegin(), rx.cend()); i = ranges::uninitialized_default_construct(rx.begin(), rx.end());
else if (k == 4) else if (k == 4)
i = ranges::uninitialized_default_construct(std::as_const(rx)); i = ranges::uninitialized_default_construct(std::as_const(rx));
else if (k == 5) else if (k == 5)
i = ranges::uninitialized_default_construct_n(rx.cbegin(), 1024); i = ranges::uninitialized_default_construct_n(rx.begin(), 1024);
else else
__builtin_abort(); __builtin_abort();
VERIFY( i == rx.cend() ); VERIFY( i == rx.end() );
VERIFY( ranges::find_if(rx, [&t](const T& v) { return t != v; }) == i ); VERIFY( ranges::find_if(rx, [&t](const T& v) { return t != v; }) == i );
ranges::destroy(rx); ranges::destroy(rx);
......
...@@ -45,7 +45,7 @@ test01(const T& value) ...@@ -45,7 +45,7 @@ test01(const T& value)
auto buffer = std::unique_ptr<char[]>(new char[sizeof(T)*size]); auto buffer = std::unique_ptr<char[]>(new char[sizeof(T)*size]);
std::span<T> rx((T *)buffer.get(), size); std::span<T> rx((T *)buffer.get(), size);
auto i = rx.cbegin(); auto i = rx.begin();
if (k == 0) if (k == 0)
i = ranges::uninitialized_fill(rx.begin(), rx.end(), value); i = ranges::uninitialized_fill(rx.begin(), rx.end(), value);
else if (k == 1) else if (k == 1)
...@@ -53,15 +53,15 @@ test01(const T& value) ...@@ -53,15 +53,15 @@ test01(const T& value)
else if (k == 2) else if (k == 2)
i = ranges::uninitialized_fill_n(rx.begin(), 1024, value); i = ranges::uninitialized_fill_n(rx.begin(), 1024, value);
else if (k == 3) else if (k == 3)
i = ranges::uninitialized_fill(rx.cbegin(), rx.cend(), value); i = ranges::uninitialized_fill(rx.begin(), rx.end(), value);
else if (k == 4) else if (k == 4)
i = ranges::uninitialized_fill(std::as_const(rx), value); i = ranges::uninitialized_fill(std::as_const(rx), value);
else if (k == 5) else if (k == 5)
i = ranges::uninitialized_fill_n(rx.cbegin(), 1024, value); i = ranges::uninitialized_fill_n(rx.begin(), 1024, value);
else else
__builtin_abort(); __builtin_abort();
VERIFY( i == rx.cend() ); VERIFY( i == rx.end() );
VERIFY( ranges::find_if(rx, [&value](const T& v) { return value != v; }) == i ); VERIFY( ranges::find_if(rx, [&value](const T& v) { return value != v; }) == i );
ranges::destroy(rx); ranges::destroy(rx);
......
...@@ -51,7 +51,7 @@ test01(std::vector<T> ix) ...@@ -51,7 +51,7 @@ test01(std::vector<T> ix)
auto buffer = std::unique_ptr<char[]>(new char[sizeof(T)*size]); auto buffer = std::unique_ptr<char[]>(new char[sizeof(T)*size]);
std::span<T> rx((T *)buffer.get(), size); std::span<T> rx((T *)buffer.get(), size);
ranges::uninitialized_move_result res = {ix.cbegin(), rx.cbegin()}; ranges::uninitialized_move_result res = {ix.begin(), rx.begin()};
if (k == 0) if (k == 0)
res = ranges::uninitialized_move(ix.begin(), ix.end(), res = ranges::uninitialized_move(ix.begin(), ix.end(),
rx.begin(), rx.end()); rx.begin(), rx.end());
...@@ -62,33 +62,33 @@ test01(std::vector<T> ix) ...@@ -62,33 +62,33 @@ test01(std::vector<T> ix)
rx.begin(), rx.end()); rx.begin(), rx.end());
else if (k == 3) else if (k == 3)
res = ranges::uninitialized_move(ix.begin(), ix.end(), res = ranges::uninitialized_move(ix.begin(), ix.end(),
rx.cbegin(), rx.cend()); rx.begin(), rx.end());
else if (k == 4) else if (k == 4)
res = ranges::uninitialized_move(ix, std::as_const(rx)); res = ranges::uninitialized_move(ix, std::as_const(rx));
else if (k == 5) else if (k == 5)
res = ranges::uninitialized_move_n(ix.begin(), size, res = ranges::uninitialized_move_n(ix.begin(), size,
rx.cbegin(), rx.cend()); rx.begin(), rx.end());
else if (k == 6) else if (k == 6)
res = ranges::uninitialized_move_n(ix.begin(), size/2, res = ranges::uninitialized_move_n(ix.begin(), size/2,
rx.cbegin(), rx.cend()); rx.begin(), rx.end());
else if (k == 7) else if (k == 7)
res = ranges::uninitialized_move_n(ix.begin(), size, res = ranges::uninitialized_move_n(ix.begin(), size,
rx.cbegin(), rx.cbegin()+size/2); rx.begin(), rx.begin()+size/2);
else else
__builtin_abort(); __builtin_abort();
if (k == 6 || k == 7) if (k == 6 || k == 7)
{ {
VERIFY( ranges::distance(ix.cbegin(), res.in) == size/2 ); VERIFY( ranges::distance(ix.begin(), res.in) == size/2 );
VERIFY( ranges::distance(rx.cbegin(), res.out) == size/2 ); VERIFY( ranges::distance(rx.begin(), res.out) == size/2 );
VERIFY( ranges::equal(saved_ix.begin(), saved_ix.begin()+size/2, VERIFY( ranges::equal(saved_ix.begin(), saved_ix.begin()+size/2,
rx.begin(), rx.begin()+size/2) ); rx.begin(), rx.begin()+size/2) );
ranges::destroy(rx.begin(), rx.begin()+size/2); ranges::destroy(rx.begin(), rx.begin()+size/2);
} }
else else
{ {
VERIFY( res.in == ix.cend() ); VERIFY( res.in == ix.end() );
VERIFY( res.out == rx.cend() ); VERIFY( res.out == rx.end() );
VERIFY( ranges::equal(saved_ix, rx) ); VERIFY( ranges::equal(saved_ix, rx) );
ranges::destroy(rx); ranges::destroy(rx);
} }
......
...@@ -48,7 +48,7 @@ test01() ...@@ -48,7 +48,7 @@ test01()
T t{}; T t{};
auto i = rx.cbegin(); auto i = rx.begin();
if (k == 0) if (k == 0)
i = ranges::uninitialized_value_construct(rx.begin(), rx.end()); i = ranges::uninitialized_value_construct(rx.begin(), rx.end());
else if (k == 1) else if (k == 1)
...@@ -56,15 +56,15 @@ test01() ...@@ -56,15 +56,15 @@ test01()
else if (k == 2) else if (k == 2)
i = ranges::uninitialized_value_construct_n(rx.begin(), 1024); i = ranges::uninitialized_value_construct_n(rx.begin(), 1024);
else if (k == 3) else if (k == 3)
i = ranges::uninitialized_value_construct(rx.cbegin(), rx.cend()); i = ranges::uninitialized_value_construct(rx.begin(), rx.end());
else if (k == 4) else if (k == 4)
i = ranges::uninitialized_value_construct(std::as_const(rx)); i = ranges::uninitialized_value_construct(std::as_const(rx));
else if (k == 5) else if (k == 5)
i = ranges::uninitialized_value_construct_n(rx.cbegin(), 1024); i = ranges::uninitialized_value_construct_n(rx.begin(), 1024);
else else
__builtin_abort(); __builtin_abort();
VERIFY( i == rx.cend() ); VERIFY( i == rx.end() );
VERIFY( ranges::find_if(rx, [&t](const T& v) { return t != v; }) == i ); VERIFY( ranges::find_if(rx, [&t](const T& v) { return t != v; }) == i );
ranges::destroy(rx); ranges::destroy(rx);
......
...@@ -162,9 +162,8 @@ main() ...@@ -162,9 +162,8 @@ main()
bool really_empty1 = std::empty(shorts); bool really_empty1 = std::empty(shorts);
bool really_empty2 = shorts.data() == nullptr; bool really_empty2 = shorts.data() == nullptr;
bool really_empty3 = shorts.begin() == shorts.end(); bool really_empty3 = shorts.begin() == shorts.end();
bool really_empty4 = shorts.cbegin() == shorts.cend();
bool really_empty = bool really_empty =
really_empty0 && really_empty1 && really_empty2 && really_empty3 && really_empty4; really_empty0 && really_empty1 && really_empty2 && really_empty3;
(void)really_empty; (void)really_empty;
VERIFY(really_empty); VERIFY(really_empty);
...@@ -179,10 +178,10 @@ main() ...@@ -179,10 +178,10 @@ main()
std::span<const std::byte> muh_byte_span = std::as_bytes(muh_span); std::span<const std::byte> muh_byte_span = std::as_bytes(muh_span);
std::span<std::byte> muh_mutable_byte_span = std::as_writable_bytes(muh_span); std::span<std::byte> muh_mutable_byte_span = std::as_writable_bytes(muh_span);
std::span<std::byte> muh_original_byte_span(original_bytes, original_bytes + 4); std::span<std::byte> muh_original_byte_span(original_bytes, original_bytes + 4);
bool definitely_reinterpret_casted0 = std::equal(muh_byte_span.cbegin(), muh_byte_span.cend(), bool definitely_reinterpret_casted0 = std::equal(muh_byte_span.begin(), muh_byte_span.end(),
muh_original_byte_span.cbegin(), muh_original_byte_span.cend()); muh_original_byte_span.begin(), muh_original_byte_span.end());
bool definitely_reinterpret_casted1 = std::equal(muh_mutable_byte_span.cbegin(), bool definitely_reinterpret_casted1 = std::equal(muh_mutable_byte_span.begin(),
muh_mutable_byte_span.cend(), muh_original_byte_span.cbegin(), muh_original_byte_span.cend()); muh_mutable_byte_span.end(), muh_original_byte_span.begin(), muh_original_byte_span.end());
bool definitely_reinterpret_casted = bool definitely_reinterpret_casted =
definitely_reinterpret_casted0 && definitely_reinterpret_casted1; definitely_reinterpret_casted0 && definitely_reinterpret_casted1;
(void)definitely_reinterpret_casted; (void)definitely_reinterpret_casted;
...@@ -190,8 +189,8 @@ main() ...@@ -190,8 +189,8 @@ main()
std::span<std::byte> muh_original_byte_span_ptr_size(original_bytes, 4); std::span<std::byte> muh_original_byte_span_ptr_size(original_bytes, 4);
bool definitely_equivalent = bool definitely_equivalent =
std::equal(muh_original_byte_span_ptr_size.cbegin(), muh_original_byte_span_ptr_size.cend(), std::equal(muh_original_byte_span_ptr_size.begin(), muh_original_byte_span_ptr_size.end(),
muh_original_byte_span.cbegin(), muh_original_byte_span.cend()); muh_original_byte_span.begin(), muh_original_byte_span.end());
(void)definitely_equivalent; (void)definitely_equivalent;
VERIFY(definitely_equivalent); VERIFY(definitely_equivalent);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment