diff options
Diffstat (limited to 'boost/fiber/detail/exchange.hpp')
-rw-r--r-- | boost/fiber/detail/exchange.hpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/boost/fiber/detail/exchange.hpp b/boost/fiber/detail/exchange.hpp new file mode 100644 index 0000000000..57a495be7b --- /dev/null +++ b/boost/fiber/detail/exchange.hpp @@ -0,0 +1,36 @@ + +// Copyright Oliver Kowalke 2018. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_FIBER_DETAIL_EXCHANGE_H +#define BOOST_FIBER_DETAIL_EXCHANGE_H + +#include <algorithm> +#include <utility> + +#include <boost/config.hpp> + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace fibers { +namespace detail { + +template< typename T, typename U = T > +T exchange( T & t, U && nv) { + T ov = std::move( t); + t = std::forward< U >( nv); + return ov; +} + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +#include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_FIBER_DETAIL_EXCHANGE_H |