14 #ifndef RANGES_V3_ACTION_CONCEPTS_HPP
15 #define RANGES_V3_ACTION_CONCEPTS_HPP
26 #include <range/v3/detail/prologue.hpp>
34 struct movable_input_iterator
36 using iterator_category = std::input_iterator_tag;
38 using difference_type = std::ptrdiff_t;
40 using reference = T &&;
42 movable_input_iterator() =
default;
43 movable_input_iterator & operator++();
44 movable_input_iterator operator++(
int);
45 bool operator==(movable_input_iterator
const &)
const;
46 bool operator!=(movable_input_iterator
const &)
const;
61 forward_range<T> && default_constructible<uncvref_t<T>> &&
62 movable<uncvref_t<T>> &&
69 concept (container_)(T),
72 detail::movable_input_iterator<range_value_t<T>>,
73 detail::movable_input_iterator<range_value_t<T>>>
81 CPP_concept_ref(ranges::container_, T);
87 requires(C & c, C
const & cc)
92 concepts::requires_<same_as<decltype(cc.capacity()),
94 concepts::requires_<same_as<decltype(cc.max_size()),
102 container<C> && sized_range<C> && CPP_requires_ref(ranges::reservable_, C);
106 template<
typename C,
typename I>
114 template<
typename C,
typename I>
118 CPP_requires_ref(ranges::reservable_with_assign_, C, I);
124 reservable<C> && random_access_range<C>;
130 template(
typename T)(
131 requires container<T>)
132 std::true_type is_lvalue_container_like(T &) noexcept
137 template(
typename T)(
138 requires container<T>)
145 template(
typename T)(
146 requires container<T>)
147 std::true_type is_lvalue_container_like(std::reference_wrapper<T>) noexcept
152 template(
typename T)(
153 requires container<T>)
154 std::true_type is_lvalue_container_like(
ref_view<T>) noexcept
160 using is_lvalue_container_like_t =
161 decltype(detail::is_lvalue_container_like(std::declval<T>()));
169 template(
typename T)(
170 concept (lvalue_container_like_)(T),
171 implicitly_convertible_to<detail::is_lvalue_container_like_t<T>, std::true_type>
178 CPP_concept_ref(ranges::lvalue_container_like_, T);
183 #include <range/v3/detail/epilogue.hpp>
CPP_requires(sized_range_, requires(T &t)(ranges::size(t)))
\concept sized_range_
CPP_concept random_access_reservable
\concept random_access_reservable
Definition: concepts.hpp:123
CPP_concept semi_container
\concept semi_container
Definition: concepts.hpp:60
CPP_concept reservable
\concept reservable
Definition: concepts.hpp:101
CPP_concept lvalue_container_like
\concept lvalue_container_like
Definition: concepts.hpp:176
CPP_concept container
\concept container
Definition: concepts.hpp:79
CPP_concept reservable_with_assign
\concept reservable_with_assign
Definition: concepts.hpp:115
meta::size_t< L::size()> size
An integral constant wrapper that is the size of the meta::list L.
Definition: meta.hpp:1696
not_c< B::type::value > not_
Logically negate the integral constant-wrapped Boolean parameter.
Definition: meta.hpp:1357
Point operator*(double s, const Point &a)
Multiply point by scalar.
Definition: shapes.h:250
Definition: reference_wrapper.hpp:76