38#include <gtest/gtest.h>
71 static_assert(std::forward_iterator<Iter>);
72 static_assert(std::forward_iterator<CIter>);
74 static_assert(std::same_as<std::iter_reference_t<Iter>, std::iter_reference_t<const Iter>>);
75 static_assert(std::same_as<std::iter_reference_t<CIter>, std::iter_reference_t<const CIter>>);
83 using Iter = Set::iterator;
84 using CIter = Set::const_iterator;
86 static_assert(std::forward_iterator<Iter>);
87 static_assert(std::forward_iterator<CIter>);
89 static_assert(std::same_as<std::iter_reference_t<Iter>, std::iter_reference_t<const Iter>>);
90 static_assert(std::same_as<std::iter_reference_t<CIter>, std::iter_reference_t<const CIter>>);
92 using Ref = std::iter_reference_t<Iter>;
93 using Ptr = std::add_pointer_t<std::remove_reference_t<Ref>>;
94 static_assert(std::same_as<decltype(std::declval<const Iter &>().operator->()),
Ptr>,
95 "operator-> must return a pointer consistent with operator*");
127 for (
int i = 1; i <= 5; ++i)
140 for (
const int & x :
clist)
152 auto it = list.
begin();
168 EXPECT_TRUE(std::ranges::all_of(set, [](
int x) {
return x > 0; }));
170 auto it = std::ranges::find(set, 5);
174 auto min_it = std::ranges::min_element(set);
195 auto it = list.
begin();
207 GTEST_SKIP() <<
"C++20 concepts not fully supported on this platform";
C++20 Ranges support and adaptors for Aleph-w containers.
Dynamic doubly linked list with O(1) size and bidirectional access.
T & append(const T &item)
Append a copied item at the end of the list.
Dynamic set backed by balanced binary search trees with automatic memory management.
Key * insert(const Key &key)
Inserts a key into the dynamic set.
iterator end() noexcept
Return an STL-compatible end iterator.
iterator begin() noexcept
Return an STL-compatible iterator to the first element.
Main namespace for Aleph-w library functions.
DynList< T > maps(const C &c, Op op)
Classic map operation.
T sum(const Container &container, const T &init=T{})
Compute sum of all elements.
static StlIterator end(SetType &s)
Create an end iterator for the container.
Dynamic doubly linked list implementation.
Dynamic set implementations based on balanced binary search trees.