diff options
Diffstat (limited to 'boost/fusion/support/deduce.hpp')
-rw-r--r-- | boost/fusion/support/deduce.hpp | 19 |
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> |