VCCC  2024.05
VisualCamp Common C++ library
iter_exchange_move.hpp
Go to the documentation of this file.
1 //
2 // Created by YongGyu Lee on 4/15/24.
3 //
4 
5 #ifndef VCCC_ITERATOR_DETAIL_ITER_EXCHANGE_MOVE_HPP_
6 #define VCCC_ITERATOR_DETAIL_ITER_EXCHANGE_MOVE_HPP_
7 
8 #include <type_traits>
9 
12 
13 namespace vccc {
14 namespace detail {
15 
16 template<typename T, typename U>
17 constexpr iter_value_t<std::remove_reference_t<T>> iter_exchange_move(T&& x, U&& y)
18  noexcept(noexcept(iter_value_t<std::remove_reference_t<T>>(ranges::iter_move(x))))
19 {
20  iter_value_t<std::remove_reference_t<T>> tmp(ranges::iter_move(x));
21  *x = ranges::iter_move(y);
22  return tmp;
23 }
24 
25 } // namespace detail
26 } // namespace vccc
27 
28 #endif // VCCC_ITERATOR_DETAIL_ITER_EXCHANGE_MOVE_HPP_
constexpr VCCC_INLINE_OR_STATIC detail_iter_move::iter_move_niebloid iter_move
Definition: iter_move.hpp:92
typename iter_value< T >::type iter_value_t
Definition: iter_value_t.hpp:42
Definition: directory.h:12