44 template <std::ranges::input_range urng_t>
45 class view_persist :
public std::ranges::view_interface<view_persist<urng_t>>
66 urange{
new urng_t{std::move(_urange)}}
88 return std::ranges::begin(*
urange);
97 return std::ranges::cbegin(*
urange);
115 return std::ranges::end(*
urange);
124 return std::ranges::cend(*
urange);
131 template <
typename urng_t>
150 using base_t::base_t;
159 template <std::ranges::viewable_range urng_t>
160 static auto impl(urng_t && urange)
162 return std::views::all(std::forward<urng_t>(urange));
168 template <std::ranges::range urng_t>
169 static auto impl(urng_t && urange)
171 static_assert(!std::is_lvalue_reference_v<urng_t>,
"BUG: lvalue-reference in persist_fn::impl().");
Provides seqan3::detail::adaptor_base and seqan3::detail::combined_adaptor.
Adaptations of algorithms from the Ranges TS.
CRTP-base to simplify the definition of range adaptor closure objects and similar types.
Definition: adaptor_base.hpp:77
[adaptor_def]
Definition: persist_view.hpp:143
friend base_t
Befriend the base class so it can call impl().
Definition: persist_view.hpp:154
static auto impl(urng_t &&urange)
For ranges that are viewable, delegate to std::views::all.
Definition: persist_view.hpp:160
The type returned by seqan3::detail::persist.
Definition: persist_view.hpp:46
auto end() noexcept
Returns an iterator to the element following the last element of the range.
Definition: persist_view.hpp:113
view_persist(urng_t &&) -> view_persist< std::remove_reference_t< urng_t >>
Template argument type deduction guide that strips references.
auto end() const noexcept
Returns an iterator to the element following the last element of the range.
Definition: persist_view.hpp:119
auto begin() const noexcept
Returns an iterator to the first element of the container.
Definition: persist_view.hpp:92
std::shared_ptr< urng_t > urange
Shared storage of the underlying range.
Definition: persist_view.hpp:49
auto begin() noexcept
Returns an iterator to the first element of the container.
Definition: persist_view.hpp:86
view_persist() noexcept=default
Defaulted.
Provides various transformation traits used by the range module.
constexpr auto persist
[adaptor_def]
Definition: persist_view.hpp:224
Specifies requirements of an input range type for which the const version of that type satisfies the ...
Provides exceptions used in the I/O module.
Provides various transformation traits for use on iterators.
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
Adaptations of concepts from the Ranges TS.
Additional non-standard concepts for ranges.