5 #ifndef VCCC_ALGORITHM_RANGES_COPY_HPP
6 #define VCCC_ALGORITHM_RANGES_COPY_HPP
33 struct copy_niebloid {
36 struct check_range : std::false_type {};
37 template<
typename R,
typename O>
38 struct check_range<R, O, true>
40 weakly_incrementable<O>,
41 indirectly_copyable<iterator_t<R>, O>,
42 has_typename_type<borrowed_iterator<R>>
46 template<
typename I,
typename S,
typename O, std::enable_if_t<
conjunction<
55 return {std::move(
first), std::move(result)};
constexpr VCCC_INLINE_OR_STATIC detail::copy_niebloid copy
Definition: copy.hpp:69
constexpr VCCC_INLINE_OR_STATIC detail::begin_niebloid begin
returns an iterator to the beginning of a range
Definition: begin.hpp:116
constexpr VCCC_INLINE_OR_STATIC detail::end_niebloid end
returns a sentinel indicating the end of a range
Definition: end.hpp:120
#define VCCC_INLINE_OR_STATIC
Definition: inline_or_static.hpp:9
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 0 > first
Definition: key_value.hpp:34
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
Definition: conjunction.hpp:22
specifies that values may be copied from an indirectly_readable type to an indirectly_writable type
Definition: indirectly_copyable.hpp:39
Definition: in_out_result.hpp:22
Definition: sentinel_for.hpp:24
Definition: weakly_incrementable.hpp:52