VCCC  2024.05
VisualCamp Common C++ library
range_reference_t.hpp
Go to the documentation of this file.
1 //
2 // Created by yonggyulee on 2023/12/30.
3 //
4 
5 #ifndef VCCC_RANGES_RANGE_REFERENCE_T_HPP
6 #define VCCC_RANGES_RANGE_REFERENCE_T_HPP
7 
11 
12 namespace vccc {
13 namespace ranges {
14 namespace detail {
15 
16 template<typename I, bool = has_typename_type<iter_reference<I>>::value /* true */>
17 struct range_reference_impl_2 {
18  using type = iter_reference_t<I>;
19 };
20 template<typename I>
21 struct range_reference_impl_2<I, false> {};
22 
23 template<typename R, bool = has_typename_type<iterator<R>>::value /* true */>
24 struct range_reference_impl_1 : range_reference_impl_2<iterator_t<R>> {};
25 template<typename R>
26 struct range_reference_impl_1<R, false> {};
27 
28 } // namespace ranges
29 
30 template<typename R>
31 struct range_reference : detail::range_reference_impl_1<R> {};
32 
35 
41 template<typename R>
43 
45 
46 } // namespace vccc
47 } // namespace ranges
48 
49 #endif // VCCC_RANGES_RANGE_REFERENCE_T_HPP
typename range_reference< R >::type range_reference_t
Used to obtain the reference type of the iterator type of range type R.
Definition: range_reference_t.hpp:42
Definition: directory.h:12
Definition: range_reference_t.hpp:31