summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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
@@ -15,4 +15,5 @@
#include "boost/variant/recursive_wrapper_fwd.hpp"
+#include "boost/variant/detail/move.hpp"
#include "boost/checked_delete.hpp"
@@ -44,4 +45,9 @@ public: // structors
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)
@@ -62,5 +68,5 @@ public: // modifiers
}
- void swap(recursive_wrapper& operand)
+ void swap(recursive_wrapper& operand) BOOST_NOEXCEPT
{
T* temp = operand.p_;
@@ -69,4 +75,19 @@ public: // modifiers
}
+
+#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
@@ -103,4 +124,18 @@ 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)
@@ -114,5 +149,5 @@ void recursive_wrapper<T>::assign(const T& rhs)
//
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);