summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2014-10-19 20:22:58 (GMT)
committerTobias Markmann <tm@ayena.de>2014-10-20 13:49:33 (GMT)
commit6b22dfcf59474dd016a0355a3102a1dd3692d92c (patch)
tree2b1fd33be433a91e81fee84fdc2bf1b52575d934 /3rdParty/Boost/src/boost/variant/recursive_wrapper.hpp
parent38b0cb785fea8eae5e48fae56440695fdfd10ee1 (diff)
downloadswift-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.hpp39
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);
}