16
16
17
17
#include " test_macros.h"
18
18
19
- #include < print>
19
+ // #include <print>
20
20
21
21
template <typename CharT, std::size_t N = 0 >
22
22
class ReadOnlySpan {
@@ -26,16 +26,16 @@ class ReadOnlySpan {
26
26
operator std::span<CharT>() = delete ;
27
27
28
28
operator std::span<const CharT>() {
29
- std::println (stderr, " ----> ROspan" );
29
+ // std::println(stderr, "----> ROspan");
30
30
return std::span<const CharT, N>{arr_};
31
31
}
32
32
33
33
const CharT* begin () {
34
- std::println (stderr, " ----> ROspan begin" );
34
+ // std::println(stderr, "----> ROspan begin");
35
35
return arr_;
36
36
}
37
37
const CharT* end () {
38
- std::println (stderr, " ----> ROspan end" );
38
+ // std::println(stderr, "----> ROspan end");
39
39
return arr_ + N;
40
40
}
41
41
@@ -126,109 +126,6 @@ static_assert(!std::constructible_from<std::span<const wchar_t>, const NonReadOn
126
126
static_assert (!std::convertible_to<const NonReadOnlySpan<wchar_t >, std::span<const wchar_t >>);
127
127
#endif
128
128
129
- template <typename CharT, std::size_t N = 0 >
130
- class ConstConvertibleReadOnlySpan {
131
- explicit ConstConvertibleReadOnlySpan (CharT (&arr)[N]) : arr_{arr} {}
132
-
133
- public:
134
- operator std::span<CharT>() = delete ;
135
- operator std::span<CharT>() const = delete ;
136
-
137
- operator std::span<const CharT>() = delete ;
138
- operator std::span<const CharT>() const { return std::span<const CharT, N>{arr_}; }
139
-
140
- const CharT* begin () { return arr_; }
141
- const CharT* end () { return arr_ + N; }
142
-
143
- private:
144
- CharT* arr_;
145
- };
146
-
147
- template <typename CharT, std::size_t N>
148
- inline constexpr bool std::ranges::enable_borrowed_range<ConstConvertibleReadOnlySpan<CharT, N>> = true ;
149
-
150
- static_assert (std::ranges::borrowed_range<ConstConvertibleReadOnlySpan<char >>);
151
-
152
- static_assert (!std::constructible_from<std::span<char >, ConstConvertibleReadOnlySpan<char >>);
153
- static_assert (!std::convertible_to<ConstConvertibleReadOnlySpan<char >, std::span<char >>);
154
-
155
- static_assert (!std::constructible_from<std::span<char >, const ConstConvertibleReadOnlySpan<char >>);
156
- static_assert (!std::convertible_to<const ConstConvertibleReadOnlySpan<char >, std::span<char >>);
157
-
158
- static_assert (std::constructible_from<std::span<const char >, ConstConvertibleReadOnlySpan<char >>);
159
- static_assert (!std::convertible_to<ConstConvertibleReadOnlySpan<char >, std::span<const char >>);
160
-
161
- static_assert (std::constructible_from<std::span<const char >, const ConstConvertibleReadOnlySpan<char >>);
162
- static_assert (std::convertible_to<const ConstConvertibleReadOnlySpan<char >, std::span<const char >>);
163
-
164
- #ifndef TEST_HAS_NO_WIDE_CHARACTERS
165
-
166
- static_assert (std::ranges::borrowed_range<ConstConvertibleReadOnlySpan<wchar_t >>);
167
-
168
- static_assert (!std::constructible_from<std::span<wchar_t >, ConstConvertibleReadOnlySpan<wchar_t >>);
169
- static_assert (!std::convertible_to<ConstConvertibleReadOnlySpan<wchar_t >, std::span<wchar_t >>);
170
-
171
- static_assert (!std::constructible_from<std::span<wchar_t >, const ConstConvertibleReadOnlySpan<wchar_t >>);
172
- static_assert (!std::convertible_to<const ConstConvertibleReadOnlySpan<wchar_t >, std::span<wchar_t >>);
173
-
174
- static_assert (std::constructible_from<std::span<const wchar_t >, ConstConvertibleReadOnlySpan<wchar_t >>);
175
- static_assert (!std::convertible_to<ConstConvertibleReadOnlySpan<wchar_t >, std::span<const wchar_t >>);
176
-
177
- static_assert (std::constructible_from<std::span<const wchar_t >, const ConstConvertibleReadOnlySpan<wchar_t >>);
178
- static_assert (std::convertible_to<const ConstConvertibleReadOnlySpan<wchar_t >, std::span<const wchar_t >>);
179
- #endif
180
-
181
- template <typename CharT, std::size_t N = 0 >
182
- class NonConstConvertibleReadOnlySpan {
183
- explicit NonConstConvertibleReadOnlySpan (CharT (&arr)[N]) : arr_{arr} {}
184
-
185
- public:
186
- operator std::span<CharT>() = delete ;
187
- operator std::span<CharT>() const = delete ;
188
-
189
- operator std::span<const CharT>() { return std::span<const CharT, N>{arr_}; }
190
- operator std::span<const CharT>() const = delete ;
191
-
192
- const CharT* begin () { return arr_; }
193
- const CharT* end () { return arr_ + N; }
194
-
195
- private:
196
- CharT* arr_;
197
- };
198
-
199
- template <typename CharT, std::size_t N>
200
- inline constexpr bool std::ranges::enable_borrowed_range<NonConstConvertibleReadOnlySpan<CharT, N>> = true ;
201
-
202
- static_assert (std::ranges::borrowed_range<NonConstConvertibleReadOnlySpan<char >>);
203
-
204
- static_assert (!std::constructible_from<std::span<char >, NonConstConvertibleReadOnlySpan<char >>);
205
- static_assert (!std::convertible_to<NonConstConvertibleReadOnlySpan<char >, std::span<char >>);
206
-
207
- static_assert (!std::constructible_from<std::span<char >, const NonConstConvertibleReadOnlySpan<char >>);
208
- static_assert (!std::convertible_to<const NonConstConvertibleReadOnlySpan<char >, std::span<char >>);
209
-
210
- static_assert (std::constructible_from<std::span<const char >, NonConstConvertibleReadOnlySpan<char >>);
211
- static_assert (std::convertible_to<NonConstConvertibleReadOnlySpan<char >, std::span<const char >>);
212
-
213
- static_assert (!std::constructible_from<std::span<const char >, const NonConstConvertibleReadOnlySpan<char >>);
214
- static_assert (!std::convertible_to<const NonConstConvertibleReadOnlySpan<char >, std::span<const char >>);
215
-
216
- #ifndef TEST_HAS_NO_WIDE_CHARACTERS
217
- static_assert (std::ranges::borrowed_range<NonConstConvertibleReadOnlySpan<wchar_t >>);
218
-
219
- static_assert (!std::constructible_from<std::span<wchar_t >, NonConstConvertibleReadOnlySpan<wchar_t >>);
220
- static_assert (!std::convertible_to<NonConstConvertibleReadOnlySpan<wchar_t >, std::span<wchar_t >>);
221
-
222
- static_assert (!std::constructible_from<std::span<wchar_t >, const NonConstConvertibleReadOnlySpan<wchar_t >>);
223
- static_assert (!std::convertible_to<const NonConstConvertibleReadOnlySpan<wchar_t >, std::span<wchar_t >>);
224
-
225
- static_assert (std::constructible_from<std::span<const wchar_t >, NonConstConvertibleReadOnlySpan<wchar_t >>);
226
- static_assert (std::convertible_to<NonConstConvertibleReadOnlySpan<wchar_t >, std::span<const wchar_t >>);
227
-
228
- static_assert (!std::constructible_from<std::span<const wchar_t >, const NonConstConvertibleReadOnlySpan<wchar_t >>);
229
- static_assert (!std::convertible_to<const NonConstConvertibleReadOnlySpan<wchar_t >, std::span<const wchar_t >>);
230
- #endif
231
-
232
129
struct SomeObject {};
233
130
234
131
struct NonMode {};
0 commit comments