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>
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
transform_view
* include/std/ranges (transform_view): Constrain the return type of the
......
......@@ -971,7 +971,7 @@ namespace views
struct _Iterator
{
public:
using iterator_category = input_iterator_tag;
using iterator_concept = input_iterator_tag;
using difference_type = ptrdiff_t;
using value_type = _Val;
......
......@@ -68,10 +68,26 @@ test03()
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
main()
{
test01();
test02();
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