5 #ifndef VCCC_ITERATOR_INDIRECTLY_WRITABLE_HPP
6 #define VCCC_ITERATOR_INDIRECTLY_WRITABLE_HPP
25 dereferenceable<decltype(std::forward<Out>(std::declval<Out&&>()))>,
26 is_referencable<iter_reference_t<Out>>
29 struct indirectly_writable_impl_2
31 std::is_assignable<decltype(*std::declval<Out&&>()), decltype(std::forward<T>(std::declval<T&&>()))>,
32 std::is_assignable<decltype(*std::forward<Out>(std::declval<Out&&>())), decltype(std::forward<T>(std::declval<T&&>()))>,
33 std::is_assignable<decltype(
const_cast<const iter_reference_t<Out>&&
>(*std::declval<Out>())), decltype(std::forward<T>(std::declval<T&&>()))>,
34 std::is_assignable<decltype(
const_cast<const iter_reference_t<Out>&&
>(*std::forward<Out>(std::declval<Out>()))), decltype(std::forward<T>(std::declval<T&&>()))>
37 template<
typename Out,
typename T>
38 struct indirectly_writable_impl_2<Out, T, false> : std::false_type {};
46 has_typename_type<iter_reference<Out>>
49 struct indirectly_writable_impl : indirectly_writable_impl_2<Out, T> {};
50 template<
typename Out,
typename T>
51 struct indirectly_writable_impl<Out, T, false> : std::false_type {};
66 template<
typename Out,
typename T>
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
specifies that a value can be written to an iterator's referenced object
Definition: indirectly_writable.hpp:67