37template <std::ranges::forward_range Range>
52 constexpr Range
const &
range() const noexcept {
return _range; }
56 constexpr std::string_view
delimiter() const noexcept {
return _delimiter; }
60 std::string_view _delimiter;
72template <std::ranges::forward_range Range>
89template <
typename It,
typename Sent>
90requires std::forward_iterator<It> && std::sentinel_for<Sent, It>
91constexpr auto join(It first, Sent last, std::string_view delimiter)
noexcept
93 auto sub = std::ranges::subrange(first, last);
94 return join(sub, delimiter);
105template <
typename Range,
typename CharT>
106struct std::formatter<
dfx::Utils::JoinedView<Range>, CharT> : std::formatter<std::basic_string<CharT>, CharT>
108 template <
typename FormatContext>
111 std::basic_string<CharT> result;
113 auto it = std::ranges::begin(joined.
range());
114 auto end = std::ranges::end(joined.
range());
118 result += std::format(
"{}", *it);
120 for (; it != end; ++it)
123 result += std::format(
"{}", *it);
127 return std::formatter<std::basic_string<CharT>, CharT>::format(result, ctx);
Lightweight wrapper used to format a range as a delimiter-joined string via std::format.
Definition Join.hpp:39
constexpr JoinedView(Range range, std::string_view delimiter) noexcept
Construct a joined view over a range with a delimiter.
Definition Join.hpp:45
constexpr std::string_view delimiter() const noexcept
Access the delimiter used between elements.
Definition Join.hpp:56
constexpr Range const & range() const noexcept
Access the stored range.
Definition Join.hpp:52
Definition SystemConfigCommandHandler.hpp:15
constexpr JoinedView< Range > join(Range const &range, std::string_view delimiter) noexcept
Create a JoinedView from a range and a delimiter.
Definition Join.hpp:73
Definition Message.hpp:21