Lines Matching full:ranges
14 #include <ranges>
31 static_assert(!std::ranges::range<T1>);
33 static_assert(!std::ranges::viewable_range<T1>);
34 static_assert(!std::ranges::viewable_range<T1&>);
35 static_assert(!std::ranges::viewable_range<T1&&>);
36 static_assert(!std::ranges::viewable_range<T1 const>);
37 static_assert(!std::ranges::viewable_range<T1 const&>);
38 static_assert(!std::ranges::viewable_range<T1 const&&>);
41 struct T2 : test_range<cpp20_input_iterator>, std::ranges::view_base {
44 static_assert(std::ranges::range<T2>);
45 static_assert(std::ranges::view<T2>);
48 static_assert(std::ranges::viewable_range<T2>);
49 static_assert(std::ranges::viewable_range<T2&>);
50 static_assert(std::ranges::viewable_range<T2&&>);
51 static_assert(std::ranges::viewable_range<T2 const>);
52 static_assert(std::ranges::viewable_range<T2 const&>);
53 static_assert(std::ranges::viewable_range<T2 const&&>);
56 struct T3 : test_range<cpp20_input_iterator>, std::ranges::view_base {
59 static_assert(std::ranges::range<T3>);
60 static_assert(std::ranges::view<T3>);
63 static_assert(std::ranges::viewable_range<T3>);
64 static_assert(std::ranges::viewable_range<T3&>);
65 static_assert(std::ranges::viewable_range<T3&&>);
66 static_assert(std::ranges::viewable_range<T3 const>);
67 static_assert(std::ranges::viewable_range<T3 const&>);
68 static_assert(std::ranges::viewable_range<T3 const&&>);
71 struct T4 : test_range<cpp20_input_iterator>, std::ranges::view_base {
76 static_assert(std::ranges::range<T4 const&>);
77 static_assert(std::ranges::view<std::remove_cvref_t<T4 const&>>);
80 static_assert(!std::ranges::viewable_range<T4 const&>);
87 static_assert( std::ranges::range<T5>);
88 static_assert(!std::ranges::view<T5>);
93 static_assert( std::ranges::viewable_range<T5>); // movable
94 static_assert( std::ranges::viewable_range<T5&>); // movable
95 static_assert( std::ranges::viewable_range<T5&&>); // movable
96 static_assert(!std::ranges::viewable_range<const T5>);
97 static_assert( std::ranges::viewable_range<const T5&>); // lvalue
98 static_assert(!std::ranges::viewable_range<const T5&&>);
101 static_assert( std::ranges::range<std::initializer_list<int>>);
102 static_assert(!std::ranges::view<std::initializer_list<int>>);
106 static_assert(!std::ranges::viewable_range<std::initializer_list<int>>);
107 static_assert( std::ranges::viewable_range<std::initializer_list<int>&>);
108 static_assert(!std::ranges::viewable_range<std::initializer_list<int>&&>);
109 static_assert(!std::ranges::viewable_range<std::initializer_list<int> const>);
110 static_assert( std::ranges::viewable_range<std::initializer_list<int> const&>);
111 static_assert(!std::ranges::viewable_range<std::initializer_list<int> const&&>);
115 static_assert( std::ranges::range<T6>);
116 static_assert(!std::ranges::view<T6>);
120 static_assert(!std::ranges::viewable_range<T6>);
121 static_assert( std::ranges::viewable_range<T6&>); // lvalue
122 static_assert(!std::ranges::viewable_range<T6&&>);
123 static_assert(!std::ranges::viewable_range<const T6>);
124 static_assert( std::ranges::viewable_range<const T6&>); // lvalue
125 static_assert(!std::ranges::viewable_range<const T6&&>);
131 static_assert(std::ranges::range<T7&>);
132 static_assert(!std::ranges::view<std::remove_cvref_t<T7&>>);
135 static_assert(!std::ranges::viewable_range<T7>);
136 static_assert( std::ranges::viewable_range<T7&>);
137 static_assert(!std::ranges::viewable_range<T7&&>);
138 static_assert(!std::ranges::viewable_range<const T7>);
139 static_assert( std::ranges::viewable_range<const T7&>);
140 static_assert(!std::ranges::viewable_range<const T7&&>);
146 static_assert(std::ranges::range<T8>);
147 static_assert(!std::ranges::view<T8>);
150 static_assert(!std::ranges::viewable_range<T8>);
151 static_assert( std::ranges::viewable_range<T8&>);
152 static_assert(!std::ranges::viewable_range<T8&&>);
153 static_assert(!std::ranges::viewable_range<const T8>);
154 static_assert( std::ranges::viewable_range<const T8&>);
155 static_assert(!std::ranges::viewable_range<const T8&&>);
158 static_assert(!std::ranges::viewable_range<void>);
159 static_assert(!std::ranges::viewable_range<int>);
160 static_assert(!std::ranges::viewable_range<int (*)(char)>);
161 static_assert(!std::ranges::viewable_range<int[]>);
162 static_assert(!std::ranges::viewable_range<int[10]>);
163 static_assert(!std::ranges::viewable_range<int(&)[]>); // not a range
164 static_assert( std::ranges::viewable_range<int(&)[10]>); // OK, lvalue
165 static_assert(!std::ranges::viewable_range<int(&&)[]>);
166 static_assert(!std::ranges::viewable_range<int(&&)[10]>);
172 static_assert(!std::ranges::viewable_range<Holder<Incomplete>*>);
173 static_assert(!std::ranges::viewable_range<Holder<Incomplete>*&>);
174 static_assert(!std::ranges::viewable_range<Holder<Incomplete>*&&>);
175 static_assert(!std::ranges::viewable_range<Holder<Incomplete>* const>);
176 static_assert(!std::ranges::viewable_range<Holder<Incomplete>* const&>);
177 static_assert(!std::ranges::viewable_range<Holder<Incomplete>* const&&>);
179 static_assert(!std::ranges::viewable_range<Holder<Incomplete>*[10]>);
180 static_assert( std::ranges::viewable_range<Holder<Incomplete>*(&)[10]>);
181 static_assert(!std::ranges::viewable_range<Holder<Incomplete>*(&&)[10]>);
182 static_assert(!std::ranges::viewable_range<Holder<Incomplete>* const[10]>);
183 static_assert( std::ranges::viewable_range<Holder<Incomplete>* const(&)[10]>);
184 static_assert(!std::ranges::viewable_range<Holder<Incomplete>* const(&&)[10]>);