diff options
author | Tobias Markmann <tm@ayena.de> | 2014-10-19 20:22:58 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2014-10-20 13:49:33 (GMT) |
commit | 6b22dfcf59474dd016a0355a3102a1dd3692d92c (patch) | |
tree | 2b1fd33be433a91e81fee84fdc2bf1b52575d934 /3rdParty/Boost/src/boost/variant/recursive_wrapper.hpp | |
parent | 38b0cb785fea8eae5e48fae56440695fdfd10ee1 (diff) | |
download | swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.zip swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.tar.bz2 |
Update Boost in 3rdParty to version 1.56.0.
This updates Boost in our 3rdParty directory to version 1.56.0.
Updated our update.sh script to stop on error.
Changed error reporting in SwiftTools/CrashReporter.cpp to SWIFT_LOG due to
missing include of <iostream> with newer Boost.
Change-Id: I4b35c77de951333979a524097f35f5f83d325edc
Diffstat (limited to '3rdParty/Boost/src/boost/variant/recursive_wrapper.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/variant/recursive_wrapper.hpp | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/3rdParty/Boost/src/boost/variant/recursive_wrapper.hpp b/3rdParty/Boost/src/boost/variant/recursive_wrapper.hpp index ddc7002..f3b88d8 100644 --- a/3rdParty/Boost/src/boost/variant/recursive_wrapper.hpp +++ b/3rdParty/Boost/src/boost/variant/recursive_wrapper.hpp @@ -14,6 +14,7 @@ #define BOOST_VARIANT_RECURSIVE_WRAPPER_HPP #include "boost/variant/recursive_wrapper_fwd.hpp" +#include "boost/variant/detail/move.hpp" #include "boost/checked_delete.hpp" namespace boost { @@ -43,6 +44,11 @@ public: // structors recursive_wrapper(const recursive_wrapper& operand); recursive_wrapper(const T& operand); +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + recursive_wrapper(recursive_wrapper&& operand); + recursive_wrapper(T&& operand); +#endif + private: // helpers, for modifiers (below) void assign(const T& rhs); @@ -61,13 +67,28 @@ public: // modifiers return *this; } - void swap(recursive_wrapper& operand) + void swap(recursive_wrapper& operand) BOOST_NOEXCEPT { T* temp = operand.p_; operand.p_ = p_; p_ = temp; } + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + recursive_wrapper& operator=(recursive_wrapper&& rhs) BOOST_NOEXCEPT + { + swap(rhs); + return *this; + } + + recursive_wrapper& operator=(T&& rhs) + { + get() = detail::variant::move(rhs); + return *this; + } +#endif + public: // queries T& get() { return *get_pointer(); } @@ -102,6 +123,20 @@ recursive_wrapper<T>::recursive_wrapper(const T& operand) { } +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +template <typename T> +recursive_wrapper<T>::recursive_wrapper(recursive_wrapper&& operand) + : p_(new T( detail::variant::move(operand.get()) )) +{ +} + +template <typename T> +recursive_wrapper<T>::recursive_wrapper(T&& operand) + : p_(new T( detail::variant::move(operand) )) +{ +} +#endif + template <typename T> void recursive_wrapper<T>::assign(const T& rhs) { @@ -113,7 +148,7 @@ void recursive_wrapper<T>::assign(const T& rhs) // Swaps two recursive_wrapper<T> objects of the same type T. // template <typename T> -inline void swap(recursive_wrapper<T>& lhs, recursive_wrapper<T>& rhs) +inline void swap(recursive_wrapper<T>& lhs, recursive_wrapper<T>& rhs) BOOST_NOEXCEPT { lhs.swap(rhs); } |