...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::adl_move_swap_ranges
// In header: <boost/move/adl_move_swap.hpp> template<typename ForwardIt1, typename ForwardIt2> ForwardIt2 adl_move_swap_ranges(ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2);
Exchanges elements between range [first1, last1) and another range starting at first2 using boost::adl_move_swap.
Parameters: first1, last1 - the first range of elements to swap first2 - beginning of the second range of elements to swap
Type requirements:
ForwardIt1, ForwardIt2 must meet the requirements of ForwardIterator.
The types of dereferenced ForwardIt1 and ForwardIt2 must meet the requirements of Swappable
Return value: Iterator to the element past the last element exchanged in the range beginning with first2.