Skip to content

Commit

Permalink
Make join_view and join_with_view iterators default-constructible
Browse files Browse the repository at this point in the history
  • Loading branch information
cpplearner committed Dec 15, 2023
1 parent 0403d19 commit 45ca314
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 6 deletions.
8 changes: 2 additions & 6 deletions stl/inc/ranges
Original file line number Diff line number Diff line change
Expand Up @@ -3806,9 +3806,7 @@ namespace ranges {
using value_type = range_value_t<_InnerRng<_Const>>;
using difference_type = common_type_t<range_difference_t<_Base>, range_difference_t<_InnerRng<_Const>>>;

// clang-format off
_Iterator() requires default_initializable<_OuterIter> = default;
// clang-format on
_Iterator() = default;

constexpr _Iterator(_Iterator<!_Const> _It)
requires _Const && convertible_to<iterator_t<_Vw>, _OuterIter>
Expand Down Expand Up @@ -4262,9 +4260,7 @@ namespace ranges {
using value_type = common_type_t<iter_value_t<_InnerIter>, iter_value_t<_PatternIter>>;
using difference_type = _Common_diff_t<_OuterIter, _InnerIter, _PatternIter>;

// clang-format off
_Iterator() requires default_initializable<_OuterIter> = default;
// clang-format on
_Iterator() = default;

constexpr _Iterator(_Iterator<!_Const> _It)
requires _Const && convertible_to<iterator_t<_Vw>, _OuterIter>
Expand Down
10 changes: 10 additions & 0 deletions tests/std/tests/P0896R4_views_join/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,16 @@ constexpr bool test_one(Outer&& rng, Expected&& expected) {
}
}

// Also validate that join_view iterators are default-constructible
{
STATIC_ASSERT(is_default_constructible_v<iterator_t<R>>);
[[maybe_unused]] iterator_t<R> i;
if constexpr (CanMemberBegin<const R>) {
STATIC_ASSERT(is_default_constructible_v<iterator_t<const R>>);
[[maybe_unused]] iterator_t<const R> ci;
}
}

// Validate join_view::end
static_assert(CanMemberEnd<R>);
static_assert(CanMemberEnd<const R>
Expand Down
10 changes: 10 additions & 0 deletions tests/std/tests/P2441R2_views_join_with/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,16 @@ constexpr void test_one(Outer&& rng, Delimiter&& delimiter, Expected&& expected)
}
}

// Also validate that join_with_view iterators are default-constructible
{
STATIC_ASSERT(is_default_constructible_v<iterator_t<R>>);
[[maybe_unused]] iterator_t<R> i;
if constexpr (CanMemberBegin<const R>) {
STATIC_ASSERT(is_default_constructible_v<iterator_t<const R>>);
[[maybe_unused]] iterator_t<const R> ci;
}
}

// Validate join_with_view::end
static_assert(CanMemberEnd<R>);
static_assert(CanMemberEnd<const R>
Expand Down

0 comments on commit 45ca314

Please sign in to comment.