24#ifndef MYSQL_RANGES_PROJECTION_VIEWS_H
25#define MYSQL_RANGES_PROJECTION_VIEWS_H
43template <std::
size_t index_tp>
57 template <
class Tuple_t>
59 using Noref_tuple_t = std::remove_reference_t<Tuple_t>;
60 using Element_t = std::tuple_element_t<index_tp, Noref_tuple_t>;
62 !std::is_rvalue_reference_v<Element_t>,
63 "Cannot project to tuple component of rvalue reference type.");
64 if constexpr (std::is_rvalue_reference_v<
decltype(tuple)> &&
65 !std::is_reference_v<Element_t>) {
69 return Element_t(std::move(std::get<index_tp>(tuple)));
71 return std::get<index_tp>(std::forward<Tuple_t>(tuple));
86template <std::
size_t index_tp, std::input_iterator Source_iterator_tp>
96template <std::
size_t index_t, std::input_iterator Tuple_iterator_t>
108template <std::
size_t index_tp, std::ranges::range Source_tp>
117template <std::
size_t index_t, std::ranges::range Source_t>
127template <
class Value_iterator_t>
134 return make_projection_iterator<0>(iterator);
140template <
class Source_t>
147 return make_projection_view<0>(
source);
155template <
class Value_iterator_t>
162 return make_projection_iterator<1>(iterator);
168template <
class Source_t>
176 return make_projection_view<1>(
source);
Definition: buffer_interface.h:40
Definition: buffer_interface.h:40
auto make_key_iterator(const auto &iterator)
Factory function to create a new iterator from a given iterator over pairs.
Definition: projection_views.h:133
auto make_mapped_iterator(const auto &iterator)
Factory function to create a new iterator from a given iterator over pairs.
Definition: projection_views.h:161
auto make_projection_view(const Source_t &source)
Factory function to create a Projection_view.
Definition: projection_views.h:118
auto make_projection_iterator(const Tuple_iterator_t &iterator)
Factory function to create a Projection_iterator.
Definition: projection_views.h:97
auto make_key_view(const auto &source)
Factory function to create a new view over the keys in a range of pairs.
Definition: projection_views.h:146
auto make_mapped_view(const auto &source)
Factory function to create a new view over the mapped values in a range of pairs.
Definition: projection_views.h:175
repeated Source source
Definition: replication_asynchronous_connection_failover.proto:42