Skip to content

Commit d689323

Browse files
committed
Use std::ranges::view
1 parent f6a4f6a commit d689323

File tree

2 files changed

+5
-10
lines changed

2 files changed

+5
-10
lines changed

include/bencode.hpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <limits>
1313
#include <map>
1414
#include <memory>
15+
#include <ranges>
1516
#include <span>
1617
#include <sstream>
1718
#include <stack>
@@ -324,11 +325,6 @@ namespace bencode {
324325

325326
namespace detail {
326327

327-
template<typename T> constexpr bool is_view = false;
328-
template<typename T> constexpr bool is_view<std::basic_string_view<T>>
329-
= true;
330-
template<typename T> constexpr bool is_view<std::span<T>> = true;
331-
332328
template<typename T>
333329
concept iterable = requires(T &t) {
334330
std::begin(t);
@@ -470,8 +466,7 @@ namespace bencode {
470466
return value;
471467
}
472468

473-
template<typename String, std::contiguous_iterator Iter>
474-
requires is_view<String>
469+
template<std::ranges::view String, std::contiguous_iterator Iter>
475470
String decode_chars(Iter &begin, Iter end, std::size_t len) {
476471
if(std::distance(begin, end) < static_cast<std::ptrdiff_t>(len)) {
477472
begin = end;
@@ -586,7 +581,7 @@ namespace bencode {
586581

587582
template<typename Data>
588583
Data do_decode(std::istream &s, eof_behavior e, bool all) {
589-
static_assert(!detail::is_view<typename Data::string>,
584+
static_assert(!std::ranges::view<typename Data::string>,
590585
"reading from stream not supported for data views");
591586

592587
std::istreambuf_iterator<char> begin(s), end;

test/test_decode.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ auto decode_tests(Builder &_, Callable &&do_decode) {
9595
auto value = do_decode(data);
9696
auto str = get<typename OutType::string>(value);
9797
expect(str, equal_to("spam"));
98-
if constexpr(bencode::detail::is_view<typename OutType::string>) {
98+
if constexpr(std::ranges::view<typename OutType::string>) {
9999
expect(&*str.begin(), within_data_memory);
100100
expect(&*str.end(), within_data_memory);
101101
}
@@ -119,7 +119,7 @@ auto decode_tests(Builder &_, Callable &&do_decode) {
119119

120120
auto str = dict.find("spam")->first;
121121
expect(str, equal_to("spam"));
122-
if constexpr(bencode::detail::is_view<typename OutType::string>) {
122+
if constexpr(std::ranges::view<typename OutType::string>) {
123123
expect(&*str.begin(), within_data_memory);
124124
expect(&*str.end(), within_data_memory);
125125
}

0 commit comments

Comments
 (0)