Commit 76a8c0f6 by Patrick Palka

libstdc++: LWG 3397 basic_istream_view::iterator should not provide iterator_category

libstdc++-v3/ChangeLog:

	LWG 3397 basic_istream_view::iterator should not provide
	iterator_category
	* include/std/ranges (basic_istream_view:_Iterator::iterator_category):
	Rename to ...
	(basic_istream_view:_Iterator::iterator_concept): ... this.
	* testsuite/std/ranges/istream_view.cc: Augment test.
parent ec15da7c
2020-02-25 Patrick Palka <ppalka@redhat.com> 2020-02-25 Patrick Palka <ppalka@redhat.com>
LWG 3397 basic_istream_view::iterator should not provide
iterator_category
* include/std/ranges (basic_istream_view:_Iterator::iterator_category):
Rename to ...
(basic_istream_view:_Iterator::iterator_concept): ... this.
* testsuite/std/ranges/istream_view.cc: Augment test.
LWG 3325 Constrain return type of transformation function for LWG 3325 Constrain return type of transformation function for
transform_view transform_view
* include/std/ranges (transform_view): Constrain the return type of the * include/std/ranges (transform_view): Constrain the return type of the
......
...@@ -971,7 +971,7 @@ namespace views ...@@ -971,7 +971,7 @@ namespace views
struct _Iterator struct _Iterator
{ {
public: public:
using iterator_category = input_iterator_tag; using iterator_concept = input_iterator_tag;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
using value_type = _Val; using value_type = _Val;
......
...@@ -68,10 +68,26 @@ test03() ...@@ -68,10 +68,26 @@ test03()
VERIFY( ranges::equal(v, (int[]){0,1,2,3,4}) ); VERIFY( ranges::equal(v, (int[]){0,1,2,3,4}) );
} }
template<typename T>
concept has_iterator_category = requires { typename T::iterator_category; };
void
test04()
{
std::istringstream s("12345");
auto v = ranges::istream_view<char>(s);
// LWG 3397
using It = ranges::iterator_t<decltype(v)>;
static_assert(!has_iterator_category<It>);
static_assert(std::input_iterator<It>);
static_assert(!std::forward_iterator<It>);
}
int int
main() main()
{ {
test01(); test01();
test02(); test02();
test03(); test03();
test04();
} }
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