1 //-----------------------------------------------------------------------------
2 // boost variant/detail/move.hpp header file
3 // See http://www.boost.org for updates, documentation, and revision history.
4 //-----------------------------------------------------------------------------
5 //
6 //  Copyright (c) 2002-2003 Eric Friedman
7 //  Copyright (c) 2002 by Andrei Alexandrescu
8 //  Copyright (c) 2013-2021 Antony Polukhin
9 //
10 //  Use, modification and distribution are subject to the
11 //  Boost Software License, Version 1.0. (See accompanying file
12 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
13 //
14 //  This file derivative of MoJO. Much thanks to Andrei for his initial work.
15 //  See <http://www.cuj.com/experts/2102/alexandr.htm> for information on MOJO.
16 //  Re-issued here under the Boost Software License, with permission of the original
17 //  author (Andrei Alexandrescu).
18 
19 
20 #ifndef BOOST_VARIANT_DETAIL_MOVE_HPP
21 #define BOOST_VARIANT_DETAIL_MOVE_HPP
22 
23 #include <boost/config.hpp>
24 #include <boost/detail/workaround.hpp>
25 #include <boost/move/utility_core.hpp> // for boost::move
26 #include <boost/move/adl_move_swap.hpp>
27 
28 namespace boost { namespace detail { namespace variant {
29 
30 using boost::move;
31 
32 //////////////////////////////////////////////////////////////////////////
33 // function template move_swap
34 //
35 // Swaps using Koenig lookup but falls back to move-swap for primitive
36 // types and on non-conforming compilers.
37 //
38 
39 template <typename T>
move_swap(T & lhs,T & rhs)40 inline void move_swap(T& lhs, T& rhs)
41 {
42     ::boost::adl_move_swap(lhs, rhs);
43 }
44 
45 }}} // namespace boost::detail::variant
46 
47 #endif // BOOST_VARIANT_DETAIL_MOVE_HPP
48 
49 
50 
51