VCCC  2024.05
VisualCamp Common C++ library
input_iterator.hpp
Go to the documentation of this file.
1 //
2 // Created by cosge on 2023-12-03.
3 //
4 
5 #ifndef VCCC_ITERATOR_INPUT_ITERATOR_HPP_
6 #define VCCC_ITERATOR_INPUT_ITERATOR_HPP_
7 
8 #include <type_traits>
9 
16 
17 namespace vccc {
18 namespace detail {
19 
20 template<
21  typename I,
22  bool = conjunction<
23  input_or_output_iterator<I>,
24  indirectly_readable<I>,
25  has_typename_type<ITER_CONCEPT_T<I>>
26  >::value
27 >
28 struct input_iterator_impl : std::false_type {};
29 
30 template<typename I>
31 struct input_iterator_impl<I, true>
32  : derived_from<ITER_CONCEPT<I>, input_iterator_tag> {};
33 
34 } // namespace detail
35 
38 
54 template<typename I>
55 struct input_iterator : detail::input_iterator_impl<I> {};
56 
58 
59 } // namespace vccc
60 
61 #endif // VCCC_ITERATOR_INPUT_ITERATOR_HPP_
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
specifies that a type is an input iterator, that is, its referenced values can be read and it can be ...
Definition: input_iterator.hpp:55