AK: Conform SimpleIterator to the random access iterator requirements

This requires pulling in some of the STL, but the result is that our
iterator is now STL Approved ™️ and our containers can be
auto-conformed to Swift protocols.
This commit is contained in:
Andrew Kaster 2024-08-05 23:45:36 -06:00 committed by Andrew Kaster
commit 756ef2c722
Notes: github-actions[bot] 2024-08-17 23:45:35 +00:00
6 changed files with 109 additions and 26 deletions

View file

@ -56,6 +56,19 @@ TEST_CASE(strings)
EXPECT_EQ(loop_counter, 2);
}
TEST_CASE(conforms_to_iterator_protocol)
{
static_assert(std::random_access_iterator<Vector<int>::Iterator>);
static_assert(std::random_access_iterator<Vector<int>::ConstIterator>);
static_assert(std::random_access_iterator<Vector<int const>::Iterator>);
static_assert(std::random_access_iterator<Vector<int const>::ConstIterator>);
static_assert(std::random_access_iterator<Vector<String>::Iterator>);
static_assert(std::random_access_iterator<Vector<String>::ConstIterator>);
static_assert(std::random_access_iterator<Vector<String const>::Iterator>);
static_assert(std::random_access_iterator<Vector<String const>::ConstIterator>);
}
TEST_CASE(strings_insert_ordered)
{
Vector<ByteString> strings;