diff --git a/tests/std/tests/P0896R4_ranges_range_machinery/test.cpp b/tests/std/tests/P0896R4_ranges_range_machinery/test.cpp index 83bdb64bc35..3d8dd469fe1 100644 --- a/tests/std/tests/P0896R4_ranges_range_machinery/test.cpp +++ b/tests/std/tests/P0896R4_ranges_range_machinery/test.cpp @@ -27,6 +27,11 @@ #include #include +#if _HAS_CXX23 +#include +#include +#endif // _HAS_CXX23 + #include // Note that many tests herein assume: @@ -836,7 +841,11 @@ constexpr bool test_std_container() { } static_assert(test_empty()); if constexpr (std::contiguous_iterator) { - static_assert(test_data()); + if constexpr (std::is_same_v) { + static_assert(test_data()); + } else { + static_assert(test_data()); + } static_assert(test_cdata()); } static_assert(!ranges::view); @@ -899,6 +908,7 @@ static_assert(test_std_container, std::bidirectional_ite static_assert(test_std_container, std::bidirectional_iterator_tag>()); static_assert(test_std_container, std::bidirectional_iterator_tag>()); static_assert(test_std_container()); +// Implementation-specific: unordered_meow uses list's iterators, so they're bidirectional instead of forward. static_assert(test_std_container, std::bidirectional_iterator_tag>()); static_assert(test_std_container, std::bidirectional_iterator_tag>()); static_assert(test_std_container, std::bidirectional_iterator_tag>()); @@ -907,6 +917,14 @@ static_assert(test_std_container, std::contiguous_iterator_tag> static_assert(test_std_container, std::random_access_iterator_tag>()); static_assert(test_std_container()); +#if _HAS_CXX23 +static_assert(test_std_container, std::random_access_iterator_tag>()); +static_assert(test_std_container, std::random_access_iterator_tag>()); +// Implementation-specific: flat_set uses the underlying container's iterators, so they're contiguous here. +static_assert(test_std_container, std::contiguous_iterator_tag>()); +static_assert(test_std_container, std::contiguous_iterator_tag>()); +#endif // _HAS_CXX23 + // Validate that "old" fancy pointers that fail to model contiguous_iterator don't break contiguity of containers. template struct fancy_pointer { diff --git a/tests/std/tests/P1206R7_ranges_to_mappish/test.cpp b/tests/std/tests/P1206R7_ranges_to_mappish/test.cpp index 6ba6e3fa3bb..7c15710ded9 100644 --- a/tests/std/tests/P1206R7_ranges_to_mappish/test.cpp +++ b/tests/std/tests/P1206R7_ranges_to_mappish/test.cpp @@ -4,11 +4,15 @@ #include #include #include +#include +#include #include +#include #include #include #include #include +#include #include @@ -71,6 +75,20 @@ struct mappish_instantiator { template using apply = std::unordered_multimap, std::equal_to, Args...>; }; + template <> + struct deduce_container_impl { + template + using apply = std::flat_map, + std::vector::template rebind_alloc...>, + std::vector::template rebind_alloc...>>; + }; + template <> + struct deduce_container_impl { + template + using apply = std::flat_multimap, + std::vector::template rebind_alloc...>, + std::vector::template rebind_alloc...>>; + }; template