VCCC  2024.05
VisualCamp Common C++ library
indirectly_copyable_storable.hpp
Go to the documentation of this file.
1 //
2 // Created by yonggyulee on 2023/12/31.
3 //
4 
5 #ifndef VCCC_ITERATOR_INDIRECTLY_COPYABLE_STORABLE_HPP
6 #define VCCC_ITERATOR_INDIRECTLY_COPYABLE_STORABLE_HPP
7 
8 #include <type_traits>
9 
18 
19 namespace vccc {
20 namespace detail {
21 
23 struct indirectly_copyable_storable_impl
24  : conjunction<
25  indirectly_writable<Out, iter_value_t<In>&>,
26  indirectly_writable<Out, const iter_value_t<In>&>,
27  indirectly_writable<Out, iter_value_t<In>&&>,
28  indirectly_writable<Out, const iter_value_t<In>&&>,
29  copyable<iter_value_t<In>>,
30  constructible_from<iter_value_t<In>, iter_reference_t<In>>,
31  assignable_from<iter_value_t<In>&, iter_reference_t<In>>
32  >{};
33 
34 template<typename In, typename Out>
35 struct indirectly_copyable_storable_impl<In, Out, false> : std::false_type {};
36 
37 } // namespace detail
38 
41 
52 template<typename In, typename Out>
53 struct indirectly_copyable_storable : detail::indirectly_copyable_storable_impl<In, Out> {};
54 
56 
57 } // namespace vccc
58 
59 #endif // VCCC_ITERATOR_INDIRECTLY_COPYABLE_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 copied from an indirectly_readable type to an indirectly_writable type a...
Definition: indirectly_copyable_storable.hpp:53