summaryrefslogtreecommitdiff
path: root/boost/move/detail/workaround.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/move/detail/workaround.hpp')
-rw-r--r--boost/move/detail/workaround.hpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/boost/move/detail/workaround.hpp b/boost/move/detail/workaround.hpp
index 1bf879cbbc..67ba161345 100644
--- a/boost/move/detail/workaround.hpp
+++ b/boost/move/detail/workaround.hpp
@@ -11,6 +11,14 @@
#ifndef BOOST_MOVE_DETAIL_WORKAROUND_HPP
#define BOOST_MOVE_DETAIL_WORKAROUND_HPP
+#ifndef BOOST_CONFIG_HPP
+# include <boost/config.hpp>
+#endif
+#
+#if defined(BOOST_HAS_PRAGMA_ONCE)
+# pragma once
+#endif
+
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
#define BOOST_MOVE_PERFECT_FORWARDING
#endif
@@ -23,4 +31,15 @@
#define BOOST_MOVE_I ,
#define BOOST_MOVE_DOCIGN(T1) T1
+#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 5) && !defined(__clang__)
+ //Pre-standard rvalue binding rules
+ #define BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES
+#elif defined(_MSC_VER) && (_MSC_VER == 1600)
+ //Standard rvalue binding rules but with some bugs
+ #define BOOST_MOVE_MSVC_10_MEMBER_RVALUE_REF_BUG
+ #define BOOST_MOVE_MSVC_AUTO_MOVE_RETURN_BUG
+#elif defined(_MSC_VER) && (_MSC_VER == 1700)
+ #define BOOST_MOVE_MSVC_AUTO_MOVE_RETURN_BUG
+#endif
+
#endif //#ifndef BOOST_MOVE_DETAIL_WORKAROUND_HPP