1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
10
11 // <ranges>
12
13 // std::ranges::chunk_by_view<V>::<iterator>() = default;
14
15 #include <ranges>
16
17 #include <cassert>
18 #include <functional>
19 #include <type_traits>
20 #include <utility>
21
22 #include "../types.h"
23 #include "test_iterators.h"
24
25 template <class Iterator, bool IsNoexcept>
testDefaultConstructible()26 constexpr void testDefaultConstructible() {
27 // Make sure the iterator is default constructible.
28 using ChunkByView = std::ranges::chunk_by_view<View<Iterator>, std::ranges::less_equal>;
29 using ChunkByIterator = std::ranges::iterator_t<ChunkByView>;
30 ChunkByIterator i{};
31 ChunkByIterator j;
32 assert(i == j);
33 static_assert(noexcept(ChunkByIterator{}) == IsNoexcept);
34 }
35
tests()36 constexpr bool tests() {
37 testDefaultConstructible<forward_iterator<int*>, /*IsNoexcept=*/false>();
38 testDefaultConstructible<bidirectional_iterator<int*>, /*IsNoexcept=*/false>();
39 testDefaultConstructible<random_access_iterator<int*>, /*IsNoexcept=*/false>();
40 testDefaultConstructible<contiguous_iterator<int*>, /*IsNoexcept=*/false>();
41 testDefaultConstructible<int*, /*IsNoexcept=*/true>();
42 return true;
43 }
44
main(int,char **)45 int main(int, char**) {
46 tests();
47 static_assert(tests());
48
49 return 0;
50 }
51