mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-04-01 12:43:47 +00:00
[libcxx][test] unordered_meow
iterators are not portably non-bidi
MSVCSTL's are actually bidirectional. Differential Revision: https://reviews.llvm.org/D117369
This commit is contained in:
parent
ad4e26833f
commit
f105d98443
@ -15,6 +15,8 @@
|
||||
|
||||
#include <iterator>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
using iterator = std::unordered_map<int, int>::iterator;
|
||||
using const_iterator = std::unordered_map<int, int>::const_iterator;
|
||||
using local_iterator = std::unordered_map<int, int>::local_iterator;
|
||||
@ -22,42 +24,32 @@ using const_local_iterator = std::unordered_map<int, int>::const_local_iterator;
|
||||
using value_type = std::pair<const int, int>;
|
||||
|
||||
static_assert(std::forward_iterator<iterator>);
|
||||
static_assert(!std::bidirectional_iterator<iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<iterator>);
|
||||
static_assert(!std::indirectly_writable<iterator, value_type>);
|
||||
static_assert(std::sentinel_for<iterator, iterator>);
|
||||
static_assert(std::sentinel_for<iterator, const_iterator>);
|
||||
static_assert(!std::sentinel_for<iterator, local_iterator>);
|
||||
static_assert(!std::sentinel_for<iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_movable_storable<iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_swappable<iterator, iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<const_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<const_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<const_iterator>);
|
||||
static_assert(!std::indirectly_writable<const_iterator, value_type>);
|
||||
static_assert(std::sentinel_for<const_iterator, iterator>);
|
||||
static_assert(std::sentinel_for<const_iterator, const_iterator>);
|
||||
static_assert(!std::sentinel_for<const_iterator, local_iterator>);
|
||||
static_assert(!std::sentinel_for<const_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<const_iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_movable_storable<const_iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_swappable<const_iterator, const_iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<local_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<local_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<local_iterator>);
|
||||
static_assert(!std::indirectly_writable<local_iterator, value_type>);
|
||||
static_assert(!std::sentinel_for<local_iterator, iterator>);
|
||||
static_assert(!std::sentinel_for<local_iterator, const_iterator>);
|
||||
static_assert(std::sentinel_for<local_iterator, local_iterator>);
|
||||
static_assert(std::sentinel_for<local_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<local_iterator, std::pair<int, int>*>);
|
||||
@ -65,14 +57,12 @@ static_assert(!std::indirectly_movable_storable<local_iterator, std::pair<int, i
|
||||
static_assert(!std::indirectly_swappable<local_iterator, local_iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<const_local_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<const_local_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<const_local_iterator>);
|
||||
static_assert(!std::indirectly_writable<const_local_iterator, value_type>);
|
||||
static_assert(!std::sentinel_for<const_local_iterator, iterator>);
|
||||
static_assert(!std::sentinel_for<const_local_iterator, const_iterator>);
|
||||
static_assert(std::sentinel_for<const_local_iterator, local_iterator>);
|
||||
static_assert(std::sentinel_for<const_local_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<const_local_iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_movable_storable<const_local_iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_swappable<const_local_iterator, const_local_iterator>);
|
||||
|
@ -17,13 +17,15 @@
|
||||
#include <concepts>
|
||||
#include <ranges>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
using range = std::unordered_map<int, int>;
|
||||
|
||||
|
||||
static_assert(std::same_as<std::ranges::iterator_t<range>, range::iterator>);
|
||||
static_assert(std::ranges::common_range<range>);
|
||||
static_assert(std::ranges::forward_range<range>);
|
||||
static_assert(!std::ranges::bidirectional_range<range>);
|
||||
LIBCPP_STATIC_ASSERT(!std::ranges::bidirectional_range<range>);
|
||||
static_assert(!std::ranges::view<range>);
|
||||
static_assert(std::ranges::sized_range<range>);
|
||||
static_assert(!std::ranges::borrowed_range<range>);
|
||||
@ -32,7 +34,7 @@ static_assert(std::ranges::viewable_range<range>);
|
||||
static_assert(std::same_as<std::ranges::iterator_t<range const>, range::const_iterator>);
|
||||
static_assert(std::ranges::common_range<range const>);
|
||||
static_assert(std::ranges::forward_range<range const>);
|
||||
static_assert(!std::ranges::bidirectional_range<range const>);
|
||||
LIBCPP_STATIC_ASSERT(!std::ranges::bidirectional_range<range const>);
|
||||
static_assert(!std::ranges::view<range const>);
|
||||
static_assert(std::ranges::sized_range<range const>);
|
||||
static_assert(!std::ranges::borrowed_range<range const>);
|
||||
|
@ -15,6 +15,8 @@
|
||||
|
||||
#include <iterator>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
using iterator = std::unordered_multimap<int, int>::iterator;
|
||||
using const_iterator = std::unordered_multimap<int, int>::const_iterator;
|
||||
using local_iterator = std::unordered_multimap<int, int>::local_iterator;
|
||||
@ -22,42 +24,32 @@ using const_local_iterator = std::unordered_multimap<int, int>::const_local_iter
|
||||
using value_type = std::pair<const int, int>;
|
||||
|
||||
static_assert(std::forward_iterator<iterator>);
|
||||
static_assert(!std::bidirectional_iterator<iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<iterator>);
|
||||
static_assert(!std::indirectly_writable<iterator, value_type>);
|
||||
static_assert(std::sentinel_for<iterator, iterator>);
|
||||
static_assert(std::sentinel_for<iterator, const_iterator>);
|
||||
static_assert(!std::sentinel_for<iterator, local_iterator>);
|
||||
static_assert(!std::sentinel_for<iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_movable_storable<iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_swappable<iterator, iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<const_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<const_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<const_iterator>);
|
||||
static_assert(!std::indirectly_writable<const_iterator, value_type>);
|
||||
static_assert(std::sentinel_for<const_iterator, iterator>);
|
||||
static_assert(std::sentinel_for<const_iterator, const_iterator>);
|
||||
static_assert(!std::sentinel_for<const_iterator, local_iterator>);
|
||||
static_assert(!std::sentinel_for<const_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<const_iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_movable_storable<const_iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_swappable<const_iterator, const_iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<local_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<local_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<local_iterator>);
|
||||
static_assert(!std::indirectly_writable<local_iterator, value_type>);
|
||||
static_assert(!std::sentinel_for<local_iterator, iterator>);
|
||||
static_assert(!std::sentinel_for<local_iterator, const_iterator>);
|
||||
static_assert(std::sentinel_for<local_iterator, local_iterator>);
|
||||
static_assert(std::sentinel_for<local_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<local_iterator, std::pair<int, int>*>);
|
||||
@ -65,14 +57,12 @@ static_assert(!std::indirectly_movable_storable<local_iterator, std::pair<int, i
|
||||
static_assert(!std::indirectly_swappable<local_iterator, local_iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<const_local_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<const_local_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<const_local_iterator>);
|
||||
static_assert(!std::indirectly_writable<const_local_iterator, value_type>);
|
||||
static_assert(!std::sentinel_for<const_local_iterator, iterator>);
|
||||
static_assert(!std::sentinel_for<const_local_iterator, const_iterator>);
|
||||
static_assert(std::sentinel_for<const_local_iterator, local_iterator>);
|
||||
static_assert(std::sentinel_for<const_local_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<const_local_iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_movable_storable<const_local_iterator, std::pair<int, int>*>);
|
||||
static_assert(!std::indirectly_swappable<const_local_iterator, const_local_iterator>);
|
||||
|
@ -17,13 +17,15 @@
|
||||
#include <concepts>
|
||||
#include <ranges>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
using range = std::unordered_multimap<int, int>;
|
||||
|
||||
|
||||
static_assert(std::same_as<std::ranges::iterator_t<range>, range::iterator>);
|
||||
static_assert(std::ranges::common_range<range>);
|
||||
static_assert(std::ranges::forward_range<range>);
|
||||
static_assert(!std::ranges::bidirectional_range<range>);
|
||||
LIBCPP_STATIC_ASSERT(!std::ranges::bidirectional_range<range>);
|
||||
static_assert(!std::ranges::view<range>);
|
||||
static_assert(std::ranges::sized_range<range>);
|
||||
static_assert(!std::ranges::borrowed_range<range>);
|
||||
@ -32,7 +34,7 @@ static_assert(std::ranges::viewable_range<range>);
|
||||
static_assert(std::same_as<std::ranges::iterator_t<range const>, range::const_iterator>);
|
||||
static_assert(std::ranges::common_range<range const>);
|
||||
static_assert(std::ranges::forward_range<range const>);
|
||||
static_assert(!std::ranges::bidirectional_range<range const>);
|
||||
LIBCPP_STATIC_ASSERT(!std::ranges::bidirectional_range<range const>);
|
||||
static_assert(!std::ranges::view<range const>);
|
||||
static_assert(std::ranges::sized_range<range const>);
|
||||
static_assert(!std::ranges::borrowed_range<range const>);
|
||||
|
@ -15,6 +15,8 @@
|
||||
|
||||
#include <iterator>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
using iterator = std::unordered_multiset<int>::iterator;
|
||||
using const_iterator = std::unordered_multiset<int>::const_iterator;
|
||||
using local_iterator = std::unordered_multiset<int>::local_iterator;
|
||||
@ -22,42 +24,32 @@ using const_local_iterator = std::unordered_multiset<int>::const_local_iterator;
|
||||
using value_type = int;
|
||||
|
||||
static_assert(std::forward_iterator<iterator>);
|
||||
static_assert(!std::bidirectional_iterator<iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<iterator>);
|
||||
static_assert(!std::indirectly_writable<iterator, value_type>);
|
||||
static_assert(std::sentinel_for<iterator, iterator>);
|
||||
static_assert(std::sentinel_for<iterator, const_iterator>);
|
||||
static_assert(!std::sentinel_for<iterator, local_iterator>);
|
||||
static_assert(!std::sentinel_for<iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<iterator, int*>);
|
||||
static_assert(std::indirectly_movable_storable<iterator, int*>);
|
||||
static_assert(!std::indirectly_swappable<iterator, iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<const_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<const_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<const_iterator>);
|
||||
static_assert(!std::indirectly_writable<const_iterator, value_type>);
|
||||
static_assert(std::sentinel_for<const_iterator, iterator>);
|
||||
static_assert(std::sentinel_for<const_iterator, const_iterator>);
|
||||
static_assert(!std::sentinel_for<const_iterator, local_iterator>);
|
||||
static_assert(!std::sentinel_for<const_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<const_iterator, int*>);
|
||||
static_assert(std::indirectly_movable_storable<const_iterator, int*>);
|
||||
static_assert(!std::indirectly_swappable<const_iterator, const_iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<local_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<local_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<local_iterator>);
|
||||
static_assert(!std::indirectly_writable<local_iterator, value_type>);
|
||||
static_assert(!std::sentinel_for<local_iterator, iterator>);
|
||||
static_assert(!std::sentinel_for<local_iterator, const_iterator>);
|
||||
static_assert(std::sentinel_for<local_iterator, local_iterator>);
|
||||
static_assert(std::sentinel_for<local_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<local_iterator, int*>);
|
||||
@ -65,14 +57,12 @@ static_assert(std::indirectly_movable_storable<local_iterator, int*>);
|
||||
static_assert(!std::indirectly_swappable<local_iterator, local_iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<const_local_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<const_local_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<const_local_iterator>);
|
||||
static_assert(!std::indirectly_writable<const_local_iterator, value_type>);
|
||||
static_assert(!std::sentinel_for<const_local_iterator, iterator>);
|
||||
static_assert(!std::sentinel_for<const_local_iterator, const_iterator>);
|
||||
static_assert(std::sentinel_for<const_local_iterator, local_iterator>);
|
||||
static_assert(std::sentinel_for<const_local_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<const_local_iterator, int*>);
|
||||
static_assert(std::indirectly_movable_storable<const_local_iterator, int*>);
|
||||
static_assert(!std::indirectly_swappable<const_local_iterator, const_local_iterator>);
|
||||
|
@ -17,13 +17,15 @@
|
||||
#include <concepts>
|
||||
#include <ranges>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
using range = std::unordered_multiset<int>;
|
||||
|
||||
|
||||
static_assert(std::same_as<std::ranges::iterator_t<range>, range::iterator>);
|
||||
static_assert(std::ranges::common_range<range>);
|
||||
static_assert(std::ranges::forward_range<range>);
|
||||
static_assert(!std::ranges::bidirectional_range<range>);
|
||||
LIBCPP_STATIC_ASSERT(!std::ranges::bidirectional_range<range>);
|
||||
static_assert(!std::ranges::view<range>);
|
||||
static_assert(std::ranges::sized_range<range>);
|
||||
static_assert(!std::ranges::borrowed_range<range>);
|
||||
@ -32,7 +34,7 @@ static_assert(std::ranges::viewable_range<range>);
|
||||
static_assert(std::same_as<std::ranges::iterator_t<range const>, range::const_iterator>);
|
||||
static_assert(std::ranges::common_range<range const>);
|
||||
static_assert(std::ranges::forward_range<range const>);
|
||||
static_assert(!std::ranges::bidirectional_range<range const>);
|
||||
LIBCPP_STATIC_ASSERT(!std::ranges::bidirectional_range<range const>);
|
||||
static_assert(!std::ranges::view<range const>);
|
||||
static_assert(std::ranges::sized_range<range const>);
|
||||
static_assert(!std::ranges::borrowed_range<range const>);
|
||||
|
@ -15,6 +15,8 @@
|
||||
|
||||
#include <iterator>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
using iterator = std::unordered_set<int>::iterator;
|
||||
using const_iterator = std::unordered_set<int>::const_iterator;
|
||||
using local_iterator = std::unordered_set<int>::local_iterator;
|
||||
@ -22,41 +24,31 @@ using const_local_iterator = std::unordered_set<int>::const_local_iterator;
|
||||
using value_type = int;
|
||||
|
||||
static_assert(std::forward_iterator<iterator>);
|
||||
static_assert(!std::bidirectional_iterator<iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<iterator>);
|
||||
static_assert(!std::indirectly_writable<iterator, value_type>);
|
||||
static_assert(std::sentinel_for<iterator, iterator>);
|
||||
static_assert(std::sentinel_for<iterator, const_iterator>);
|
||||
static_assert(!std::sentinel_for<iterator, local_iterator>);
|
||||
static_assert(!std::sentinel_for<iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<iterator, int*>);
|
||||
static_assert(std::indirectly_movable_storable<iterator, int*>);
|
||||
static_assert(!std::indirectly_swappable<iterator, iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<const_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<const_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<const_iterator>);
|
||||
static_assert(!std::indirectly_writable<const_iterator, value_type>);
|
||||
static_assert(std::sentinel_for<const_iterator, iterator>);
|
||||
static_assert(std::sentinel_for<const_iterator, const_iterator>);
|
||||
static_assert(!std::sentinel_for<const_iterator, local_iterator>);
|
||||
static_assert(!std::sentinel_for<const_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<const_iterator, int*>);
|
||||
static_assert(std::indirectly_movable_storable<const_iterator, int*>);
|
||||
static_assert(!std::indirectly_swappable<const_iterator, const_iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<local_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<local_iterator>);
|
||||
static_assert(!std::sentinel_for<local_iterator, iterator>);
|
||||
static_assert(!std::sentinel_for<local_iterator, const_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<local_iterator>);
|
||||
static_assert(std::sentinel_for<local_iterator, local_iterator>);
|
||||
static_assert(std::sentinel_for<local_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<local_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<local_iterator, int*>);
|
||||
@ -64,14 +56,12 @@ static_assert(std::indirectly_movable_storable<local_iterator, int*>);
|
||||
static_assert(!std::indirectly_swappable<local_iterator, local_iterator>);
|
||||
|
||||
static_assert(std::forward_iterator<const_local_iterator>);
|
||||
static_assert(!std::bidirectional_iterator<const_local_iterator>);
|
||||
LIBCPP_STATIC_ASSERT(!std::bidirectional_iterator<const_local_iterator>);
|
||||
static_assert(!std::indirectly_writable<const_local_iterator, value_type>);
|
||||
static_assert(!std::sentinel_for<const_local_iterator, iterator>);
|
||||
static_assert(!std::sentinel_for<const_local_iterator, const_iterator>);
|
||||
static_assert(std::sentinel_for<const_local_iterator, local_iterator>);
|
||||
static_assert(std::sentinel_for<const_local_iterator, const_local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, const_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, local_iterator>);
|
||||
static_assert(!std::sized_sentinel_for<const_local_iterator, const_local_iterator>);
|
||||
static_assert(std::indirectly_movable<const_local_iterator, int*>);
|
||||
static_assert(std::indirectly_movable_storable<const_local_iterator, int*>);
|
||||
static_assert(!std::indirectly_swappable<const_local_iterator, const_local_iterator>);
|
||||
|
@ -17,13 +17,15 @@
|
||||
#include <concepts>
|
||||
#include <ranges>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
using range = std::unordered_set<int>;
|
||||
|
||||
|
||||
static_assert(std::same_as<std::ranges::iterator_t<range>, range::iterator>);
|
||||
static_assert(std::ranges::common_range<range>);
|
||||
static_assert(std::ranges::forward_range<range>);
|
||||
static_assert(!std::ranges::bidirectional_range<range>);
|
||||
LIBCPP_STATIC_ASSERT(!std::ranges::bidirectional_range<range>);
|
||||
static_assert(!std::ranges::view<range>);
|
||||
static_assert(std::ranges::sized_range<range>);
|
||||
static_assert(!std::ranges::borrowed_range<range>);
|
||||
@ -32,7 +34,7 @@ static_assert(std::ranges::viewable_range<range>);
|
||||
static_assert(std::same_as<std::ranges::iterator_t<range const>, range::const_iterator>);
|
||||
static_assert(std::ranges::common_range<range const>);
|
||||
static_assert(std::ranges::forward_range<range const>);
|
||||
static_assert(!std::ranges::bidirectional_range<range const>);
|
||||
LIBCPP_STATIC_ASSERT(!std::ranges::bidirectional_range<range const>);
|
||||
static_assert(!std::ranges::view<range const>);
|
||||
static_assert(std::ranges::sized_range<range const>);
|
||||
static_assert(!std::ranges::borrowed_range<range const>);
|
||||
|
Loading…
x
Reference in New Issue
Block a user