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
25template <class Iterator, bool IsNoexcept>
26constexpr 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
36constexpr 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
45int main(int, char**) {
46 tests();
47 static_assert(tests());
48
49 return 0;
50}
51

source code of libcxx/test/std/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/ctor.default.pass.cpp