summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/type_traits/add_reference.hpp')
-rw-r--r--3rdParty/Boost/src/boost/type_traits/add_reference.hpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/3rdParty/Boost/src/boost/type_traits/add_reference.hpp b/3rdParty/Boost/src/boost/type_traits/add_reference.hpp
index 7dfb4be..eb4f9b1 100644
--- a/3rdParty/Boost/src/boost/type_traits/add_reference.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/add_reference.hpp
@@ -51,13 +51,31 @@ struct add_reference_impl
};
#else
+//
+// We can't filter out rvalue_references at the same level as
+// references or we get ambiguities from msvc:
+//
template <typename T>
-struct add_reference_impl
+struct add_reference_rvalue_layer
{
typedef T& type;
};
+#ifndef BOOST_NO_RVALUE_REFERENCES
+template <typename T>
+struct add_reference_rvalue_layer<T&&>
+{
+ typedef T&& type;
+};
+#endif
+
+template <typename T>
+struct add_reference_impl
+{
+ typedef typename add_reference_rvalue_layer<T>::type type;
+};
+
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1(typename T,add_reference,T&,T&)
#endif