VCCC  2024.05
VisualCamp Common C++ library
indirect_unary_predicate.hpp
Go to the documentation of this file.
1 //
2 // Created by yonggyulee on 2024/01/12.
3 //
4 
5 #ifndef VCCC_ITERATOR_INDIRECT_UNARY_PREDICATE_HPP
6 #define VCCC_ITERATOR_INDIRECT_UNARY_PREDICATE_HPP
7 
8 #include <type_traits>
9 
17 
18 namespace vccc {
19 namespace detail {
20 
21 template<typename F, typename I, bool = conjunction<indirectly_readable<I>, copy_constructible<F>>::value /* false */>
22 struct indirect_unary_predicate_impl : std::false_type {};
23 
24 template<typename F, typename I>
25 struct indirect_unary_predicate_impl<F, I, true>
26  : conjunction<
27  predicate<F&, iter_value_t<I>>,
28  predicate<F&, iter_reference_t<I>>,
29  predicate<F&, iter_common_reference_t<I>>
30  > {};
31 
32 } // namespace detail
33 
36 
37 
48 template<typename F, typename I>
49 struct indirect_unary_predicate : detail::indirect_unary_predicate_impl<F, I> {};
50 
52 
53 } // namespace vccc
54 
55 #endif // VCCC_ITERATOR_INDIRECT_UNARY_PREDICATE_HPP
Definition: directory.h:12
specifies that a callable type, when invoked with the result of dereferencing an indirectly_readable ...
Definition: indirect_unary_predicate.hpp:49