summaryrefslogtreecommitdiff
path: root/boost/fusion/support/deduce.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/support/deduce.hpp')
-rw-r--r--boost/fusion/support/deduce.hpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/boost/fusion/support/deduce.hpp b/boost/fusion/support/deduce.hpp
index 8d53115ffc..b75381c5b3 100644
--- a/boost/fusion/support/deduce.hpp
+++ b/boost/fusion/support/deduce.hpp
@@ -12,6 +12,10 @@
#include <boost/fusion/support/config.hpp>
#include <boost/ref.hpp>
+#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
+#include <functional>
+#endif
+
namespace boost { namespace fusion { namespace traits
{
template <typename T> struct deduce;
@@ -86,6 +90,21 @@ namespace boost { namespace fusion { namespace traits
typedef T& type;
};
+ // Also unwrap C++11 std::ref if available (referencee cv is deduced)
+#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
+ template <typename T>
+ struct deduce<std::reference_wrapper<T> &>
+ {
+ typedef T& type;
+ };
+
+ template <typename T>
+ struct deduce<std::reference_wrapper<T> const &>
+ {
+ typedef T& type;
+ };
+#endif
+
// Keep references on arrays, even if const
template <typename T, int N>