diff --git a/stl/inc/algorithm b/stl/inc/algorithm
index 6b1e1d99d07..d52591085a8 100644
--- a/stl/inc/algorithm
+++ b/stl/inc/algorithm
@@ -5118,7 +5118,9 @@ namespace ranges {
return {_STD move(_First), _STD move(_Final)};
} else {
- auto [_Mid_first, _Mid_last] = _Reverse_until_mid_unchecked(_STD move(_First), _Mid, _Final);
+ const auto _Result = _Reverse_until_mid_unchecked(_STD move(_First), _Mid, _Final);
+ auto _Mid_first = _Result.begin();
+ auto _Mid_last = _Result.end();
_Reverse_common(_Mid_first, _Mid_last);
if (_Mid_first == _Mid) {
diff --git a/tests/std/tests/P0896R4_P1614R2_comparisons/test.cpp b/tests/std/tests/P0896R4_P1614R2_comparisons/test.cpp
index ebf0022a565..d590d917b7a 100644
--- a/tests/std/tests/P0896R4_P1614R2_comparisons/test.cpp
+++ b/tests/std/tests/P0896R4_P1614R2_comparisons/test.cpp
@@ -433,9 +433,9 @@ constexpr void ordering_test_cases() {
derived const some_deriveds[2] = {};
test_strongly_ordered(&some_deriveds[0], &some_deriveds[1]);
-#if !defined(__clang__) && !defined(__EDG__) // TRANSITION, VSO-938163
+#if !defined(__clang__) && !defined(__EDG__) // TRANSITION, VSO-1168721
if (!std::is_constant_evaluated())
-#endif // TRANSITION, VSO-938163
+#endif // TRANSITION, VSO-1168721
{
test_strongly_ordered(static_cast(&some_deriveds[0]), &some_deriveds[1]);
test_strongly_ordered(&some_deriveds[0], static_cast(&some_deriveds[1]));
diff --git a/tests/std/tests/P0896R4_ranges_alg_partition/test.cpp b/tests/std/tests/P0896R4_ranges_alg_partition/test.cpp
index 785d6ef20d8..c7807e78c3d 100644
--- a/tests/std/tests/P0896R4_ranges_alg_partition/test.cpp
+++ b/tests/std/tests/P0896R4_ranges_alg_partition/test.cpp
@@ -63,15 +63,17 @@ struct partition_test {
using ranges::is_partitioned, ranges::partition, ranges::partition_point, ranges::is_permutation,
ranges::subrange;
- auto pairs = elements;
+ { // Validate is_partitioned
+ auto pairs = elements;
- {
- Range range{pairs};
- ASSERT(!is_partitioned(range, is_even, get_first));
- }
- {
- Range range{pairs};
- ASSERT(!is_partitioned(range.begin(), range.end(), is_even, get_first));
+ {
+ Range range{pairs};
+ ASSERT(!is_partitioned(range, is_even, get_first));
+ }
+ {
+ Range range{pairs};
+ ASSERT(!is_partitioned(range.begin(), range.end(), is_even, get_first));
+ }
}
#if !defined(__clang__) && !defined(__EDG__) // TRANSITION, VSO-938163
@@ -79,28 +81,37 @@ struct partition_test {
#endif // TRANSITION, VSO-938163
{
if constexpr (ranges::forward_range) {
- const Range range{pairs};
- const auto mid = ranges::next(range.begin(), 4);
-
- {
- auto result = partition(range, is_even, get_first);
- ASSERT(result.begin() == mid);
- ASSERT(result.end() == range.end());
+ { // Validate range overloads of partition, is_partitioned, partition_point
+ auto pairs = elements;
+ const Range range{pairs};
+ const auto mid = ranges::next(range.begin(), 4);
+
+ {
+ auto result = partition(range, is_even, get_first);
+ ASSERT(result.begin() == mid);
+ ASSERT(result.end() == range.end());
+ }
+ ASSERT(
+ is_permutation(subrange{range.begin(), mid}, array{0, 2, 4, 6}, ranges::equal_to{}, get_first));
+ ASSERT(is_partitioned(range, is_even, get_first));
+ ASSERT(partition_point(range, is_even, get_first) == mid);
}
- ASSERT(is_permutation(subrange{range.begin(), mid}, array{0, 2, 4, 6}, ranges::equal_to{}, get_first));
- ASSERT(is_partitioned(range, is_even, get_first));
- ASSERT(partition_point(range, is_even, get_first) == mid);
-
- pairs = elements;
- {
- auto result = partition(range.begin(), range.end(), is_even, get_first);
- ASSERT(result.begin() == mid);
- ASSERT(result.end() == range.end());
+ { // Validate iterator overloads of partition, is_partitioned, partition_point
+ auto pairs = elements;
+ const Range range{pairs};
+ const auto mid = ranges::next(range.begin(), 4);
+
+ {
+ auto result = partition(range.begin(), range.end(), is_even, get_first);
+ ASSERT(result.begin() == mid);
+ ASSERT(result.end() == range.end());
+ }
+ ASSERT(
+ is_permutation(subrange{range.begin(), mid}, array{0, 2, 4, 6}, ranges::equal_to{}, get_first));
+ ASSERT(is_partitioned(range.begin(), range.end(), is_even, get_first));
+ ASSERT(partition_point(range.begin(), range.end(), is_even, get_first) == mid);
}
- ASSERT(is_permutation(subrange{range.begin(), mid}, array{0, 2, 4, 6}, ranges::equal_to{}, get_first));
- ASSERT(is_partitioned(range.begin(), range.end(), is_even, get_first));
- ASSERT(partition_point(range.begin(), range.end(), is_even, get_first) == mid);
}
}
}
diff --git a/tests/std/tests/P0896R4_ranges_iterator_machinery/test.cpp b/tests/std/tests/P0896R4_ranges_iterator_machinery/test.cpp
index f571db14fd8..e2890d284f2 100644
--- a/tests/std/tests/P0896R4_ranges_iterator_machinery/test.cpp
+++ b/tests/std/tests/P0896R4_ranges_iterator_machinery/test.cpp
@@ -1173,7 +1173,7 @@ namespace iterator_cust_swap_test {
STATIC_ASSERT(noexcept(ranges::iter_swap(&i0, &i1)));
return true;
}
-#ifdef __clang__ // TRANSITION, VSO-938163
+#if defined(__clang__) || defined(__EDG__) // TRANSITION, VSO-938163
STATIC_ASSERT(test());
#endif // TRANSITION, VSO-938163