diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2014-08-15 17:06:16 -0400 |
---|---|---|
committer | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2014-08-15 17:20:20 -0400 |
commit | 0d1d5016b57c59817fa0619e5cf4c6df046b28c3 (patch) | |
tree | eae9fc8b180f49dd5e3834f7238c9c9cad93cfd9 /src/third_party/boost-1.56.0/boost/coroutine/detail/setup.hpp | |
parent | 492d97468b1121228f208489a645759b390f023e (diff) | |
download | mongo-0d1d5016b57c59817fa0619e5cf4c6df046b28c3.tar.gz |
SERVER-8994: Boost 1.56.0
Initial import of source
Libraries: algorithm array asio bind chrono config container date_time
filesystem function integer intrusive noncopyable optional
program_options random smart_ptr static_assert thread unordered utility
Diffstat (limited to 'src/third_party/boost-1.56.0/boost/coroutine/detail/setup.hpp')
-rw-r--r-- | src/third_party/boost-1.56.0/boost/coroutine/detail/setup.hpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/third_party/boost-1.56.0/boost/coroutine/detail/setup.hpp b/src/third_party/boost-1.56.0/boost/coroutine/detail/setup.hpp new file mode 100644 index 00000000000..a776029e76b --- /dev/null +++ b/src/third_party/boost-1.56.0/boost/coroutine/detail/setup.hpp @@ -0,0 +1,75 @@ + +// Copyright Oliver Kowalke 2009. +// 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_COROUTINES_DETAIL_SETUP_H +#define BOOST_COROUTINES_DETAIL_SETUP_H + +#include <boost/assert.hpp> +#include <boost/config.hpp> +#include <boost/move/move.hpp> +#include <boost/type_traits/decay.hpp> +#include <boost/type_traits/is_convertible.hpp> +#include <boost/type_traits/is_same.hpp> + +#include <boost/coroutine/attributes.hpp> +#include <boost/coroutine/detail/coroutine_context.hpp> +#include <boost/coroutine/detail/flags.hpp> + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename Fn > +struct setup +{ + struct dummy {}; + + Fn fn; + coroutine_context * caller; + coroutine_context * callee; + attributes attr; + +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + setup( Fn fn_, + coroutine_context * caller_, + coroutine_context * callee_, + attributes const& attr_) : + fn( forward< Fn >( fn_) ), + caller( caller_), + callee( callee_), + attr( attr_) + {} +#endif + setup( BOOST_RV_REF( Fn) fn_, + coroutine_context * caller_, + coroutine_context * callee_, + attributes const& attr_, + typename disable_if< + is_same< typename decay< Fn >::type, setup >, + dummy* + >::type = 0) : +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn( fn_), +#else + fn( forward< Fn >( fn_) ), +#endif + caller( caller_), + callee( callee_), + attr( attr_) + {} +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_SETUP_H |