11 struct UniqueCopyFunction {
12 template<concepts::InputIterator It, concepts::SentinelFor<It> Sent, concepts::WeaklyIncrementable Out,
13 typename Proj = function::Identity,
14 concepts::IndirectEquivalenceRelation<meta::Projected<It, Proj>> Comp = function::Equal>
15 requires(concepts::IndirectlyCopyable<It, Out> &&
16 (concepts::ForwardIterator<It> ||
17 (concepts::InputIterator<Out> &&
19 concepts::IndirectlyCopyableStorable<It, Out>) )
20 constexpr auto operator()(It
first, Sent
last, Out out, Comp comp = {}, Proj
proj = {})
const
21 -> InOutResult<It, Out> {
23 return { util::move(first), util::move(out) };
26 if constexpr (concepts::InputIterator<Out> &&
38 }
else if constexpr (concepts::ForwardIterator<It>) {
67 return { util::move(first), util::move(out) };
70 template<concepts::InputContainer Con, concepts::WeaklyIncrementable Out,
typename Proj = function::Identity,
71 concepts::IndirectEquivalenceRelation<meta::Projected<meta::ContainerIterator<Con>, Proj>> Comp =
73 requires(concepts::IndirectlyCopyable<meta::ContainerIterator<Con>, Out> &&
74 (concepts::ForwardIterator<meta::ContainerIterator<Con>> ||
75 (concepts::InputIterator<Out> &&
77 concepts::IndirectlyCopyableStorable<meta::ContainerIterator<Con>, Out>) )
78 constexpr auto operator()(Con&& container, Out out, Comp comp = {}, Proj
proj = {})
const
86constexpr inline auto unique_copy = detail::UniqueCopyFunction {};
constexpr auto last(concepts::detail::ConstantVector auto &vector, size_t count)
Definition vector_last.h:13
constexpr auto first(concepts::detail::ConstantVector auto &vector, size_t count)
Definition vector_first.h:13
constexpr auto prev
Definition prev.h:28
constexpr auto unique_copy
Definition unique_copy.h:86
constexpr auto end
Definition end.h:55
constexpr auto begin
Definition begin.h:52
constexpr auto invoke
Definition invoke.h:100
constexpr auto ref
Definition reference_wrapper.h:98
Definition any_storable.h:9
constexpr auto proj
Definition proj.h:59