VCCC  2024.05
VisualCamp Common C++ library
range_const_reference_t.hpp
Go to the documentation of this file.
1 //
2 // Created by yonggyulee on 2024/01/27.
3 //
4 
5 #ifndef VCCC_RANGES_RANGE_CONST_REFERENCE_T_HPP
6 #define VCCC_RANGES_RANGE_CONST_REFERENCE_T_HPP
7 
10 #include "vccc/__ranges/range.hpp"
12 
13 namespace vccc {
14 namespace ranges {
15 namespace detail {
16 
17 template<typename I, bool = has_typename_type<iter_const_reference<I>>::value /* true */>
18 struct range_const_reference_impl_2 {
19  using type = iter_const_reference_t<I>;
20 };
21 template<typename I>
22 struct range_const_reference_impl_2<I, false> {};
23 
25 struct range_const_reference_impl : range_const_reference_impl_2<iterator_t<R>> {};
26 template<typename R>
27 struct range_const_reference_impl<R, false> {};
28 
29 } // namespace ranges
30 
33 
34 
35 template<typename R>
36 struct range_const_reference : detail::range_const_reference_impl<R> {};
37 
43 template<typename R>
45 
47 
48 } // namespace vccc
49 } // namespace ranges
50 
51 #endif // VCCC_RANGES_RANGE_CONST_REFERENCE_T_HPP
typename range_const_reference< R >::type range_const_reference_t
Used to obtain the reference type of the iterator type of range type R.
Definition: range_const_reference_t.hpp:44
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
Definition: range_const_reference_t.hpp:36