Skip to content

Commit 9f78edb

Browse files
authored
[libc++] tests with picolibc: Fix iterator diff_type to std::streamoff (#74072)
The hardcoded value of long int was not valid for newlib and picolibc.
1 parent bc51a36 commit 9f78edb

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

libcxx/test/std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@
1111
// This test uses iterator types from std::filesystem
1212
// XFAIL: availability-filesystem-missing
1313

14-
// std::same_as<typename Traits::difference_type, DiffType> failed.
15-
// The former was long and the latter was long long.
16-
// Possibly related to "using streamoff = long int" in ios.h.
17-
// XFAIL: LIBCXX-PICOLIBC-FIXME
18-
1914
// template<class T>
2015
// struct iterator_traits;
2116

@@ -152,8 +147,13 @@ static_assert(testIOIterator<std::insert_iterator<std::vector<int>>, std::output
152147
static_assert(testConst<std::istream_iterator<int, char>, std::input_iterator_tag, int>());
153148

154149
#if !defined(TEST_HAS_NO_LOCALIZATION)
155-
// libc++-specific since pointer type is unspecified:
156-
LIBCPP_STATIC_ASSERT(test<std::istreambuf_iterator<char>, std::input_iterator_tag, char, long long, char, char*>());
150+
// We use std::istreambuf_iterator<char>::pointer because it's unspecified, it doesn't have to be char*
151+
static_assert(test<std::istreambuf_iterator<char>,
152+
std::input_iterator_tag,
153+
char,
154+
std::streamoff,
155+
char,
156+
std::istreambuf_iterator<char>::pointer>());
157157
static_assert(test<std::move_iterator<int*>, std::random_access_iterator_tag, int, std::ptrdiff_t, int&&, int*>());
158158
static_assert(testIOIterator<std::ostream_iterator<int, char>, std::output_iterator_tag>());
159159
static_assert(testIOIterator<std::ostreambuf_iterator<int, char>, std::output_iterator_tag>());

0 commit comments

Comments
 (0)