VCCC  2024.05
VisualCamp Common C++ library
iter_rvalue_reference_t.hpp
Go to the documentation of this file.
1 //
2 // Created by cosge on 2023-12-02.
3 //
4 
5 #ifndef VCCC_ITERATOR_ITER_RVALUE_REFERENCE_T_HPP_
6 #define VCCC_ITERATOR_ITER_RVALUE_REFERENCE_T_HPP_
7 
8 #include <type_traits>
9 
12 
13 namespace vccc {
14 namespace detail {
15 
17 struct iter_rvalue_reference_impl {};
18 
19 template<typename T>
20 struct iter_rvalue_reference_impl<T, true, void_t<decltype(ranges::iter_move(std::declval<T&>()))>> {
21  using type = decltype(ranges::iter_move(std::declval<T&>()));
22 };
23 
24 } // namespace detail
25 
28 
29 template<typename T>
30 struct iter_rvalue_reference : detail::iter_rvalue_reference_impl<T> {};
31 
32 template<typename T>
34 
36 
37 } // namespace vccc
38 
39 #endif // VCCC_ITERATOR_ITER_RVALUE_REFERENCE_T_HPP_
constexpr VCCC_INLINE_OR_STATIC detail_iter_move::iter_move_niebloid iter_move
Definition: iter_move.hpp:92
typename iter_rvalue_reference< T >::type iter_rvalue_reference_t
Definition: iter_rvalue_reference_t.hpp:33
void void_t
Definition: void_t.hpp:19
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
Definition: iter_rvalue_reference_t.hpp:30