VCCC  2024.05
VisualCamp Common C++ library
indirectly_movable_storable.hpp
Go to the documentation of this file.
1 //
2 // Created by yonggyulee on 2024/01/10.
3 //
4 
5 #ifndef VCCC_ITERATOR_INDIRECTLY_MOVABLE_STORABLE_HPP
6 #define VCCC_ITERATOR_INDIRECTLY_MOVABLE_STORABLE_HPP
7 
8 #include <type_traits>
9 
18 
19 namespace vccc {
20 namespace detail {
21 
23 struct indirectly_movable_storable_impl
24  : conjunction<
25  indirectly_writable<Out, iter_value_t<In>>,
26  movable<iter_value_t<In>>,
27  constructible_from<iter_value_t<In>, iter_rvalue_reference_t<In>>,
28  assignable_from<iter_value_t<In>&, iter_rvalue_reference_t<In>>
29  >{};
30 
31 template<typename In, typename Out>
32 struct indirectly_movable_storable_impl<In, Out, false> : std::false_type {};
33 
34 } // namespace detail
35 
38 
49 template<typename In, typename Out>
50 struct indirectly_movable_storable : detail::indirectly_movable_storable_impl<In, Out> {};
51 
53 
54 } // namespace vccc
55 
56 #endif // VCCC_ITERATOR_INDIRECTLY_MOVABLE_STORABLE_HPP
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
specifies that values may be moved from an indirectly_readable type to an indirectly_writable type an...
Definition: indirectly_movable_storable.hpp:50