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
10
11 // class std::ranges::lazy_split_view::outer-iterator::value_type;
12
13 #include <ranges>
14
15 #include <cassert>
16 #include <concepts>
17 #include "../types.h"
18
19 using V = ValueTypeForward;
20 static_assert(std::ranges::forward_range<V>);
21 static_assert(std::ranges::view<V>);
22
23 static_assert(std::is_base_of_v<std::ranges::view_interface<ValueTypeForward>, ValueTypeForward>);
24
test()25 constexpr bool test() {
26 // empty()
27 {
28 {
29 SplitViewForward v("abc def", " ");
30 auto val = *v.begin();
31 assert(!val.empty());
32 }
33
34 {
35 SplitViewForward v;
36 auto val = *v.begin();
37 assert(val.empty());
38 }
39 }
40
41 // operator bool()
42 {
43 {
44 SplitViewForward v("abc def", " ");
45 auto val = *v.begin();
46 assert(val);
47 }
48
49 {
50 SplitViewForward v;
51 auto val = *v.begin();
52 assert(!val);
53 }
54 }
55
56 // front()
57 {
58 SplitViewForward v("abc def", " ");
59 auto val = *v.begin();
60 assert(val.front() == 'a');
61 }
62
63 return true;
64 }
65
main(int,char **)66 int main(int, char**) {
67 test();
68 static_assert(test());
69
70 return 0;
71 }
72