diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp
index 318cc96d..06fca37b 100644
--- a/include/boost/fusion/container/deque/deque.hpp
+++ b/include/boost/fusion/container/deque/deque.hpp
@@ -122,7 +122,8 @@ namespace boost { namespace fusion
#endif
BOOST_FUSION_GPU_ENABLED
- explicit deque(Head const& head, Tail const&... tail)
+ explicit deque(typename detail::call_param
::type head
+ , typename detail::call_param::type... tail)
: base(detail::deque_keyed_values::construct(head, tail...))
{}
diff --git a/include/boost/fusion/container/deque/deque_iterator.hpp b/include/boost/fusion/container/deque/deque_iterator.hpp
index c61d6f97..f603b545 100644
--- a/include/boost/fusion/container/deque/deque_iterator.hpp
+++ b/include/boost/fusion/container/deque/deque_iterator.hpp
@@ -11,9 +11,14 @@
#include
#include
#include
+#include
#include
#include
+#include
+#include
#include
+#include
+#include
namespace boost { namespace fusion {
diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp
index 3b9de662..967d8f48 100644
--- a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp
+++ b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp
@@ -18,12 +18,11 @@
#include
#include
#include
+#include
#include
#include
#include
#include
-#include
-#include
#include
#include
@@ -35,7 +34,6 @@
#include
#include
-#include
#include
#include
@@ -87,7 +85,7 @@ namespace boost { namespace fusion {
{}
BOOST_FUSION_GPU_ENABLED
- explicit deque(typename add_reference::type>::type t0)
+ explicit deque(typename detail::call_param::type t0)
: base(t0, detail::nil_keyed_element())
{}
diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp
index b62d4760..277811ec 100644
--- a/include/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp
+++ b/include/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp
@@ -36,7 +36,7 @@ FUSION_HASH if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
(defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES))
BOOST_FUSION_GPU_ENABLED
-deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t))
+deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param::type t))
: base(detail::deque_keyed_values::construct(BOOST_PP_ENUM_PARAMS(N, t)))
{}
#endif
diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp
index 5fb1164a..8ba7eba0 100644
--- a/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp
+++ b/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp
@@ -35,7 +35,7 @@
#define N BOOST_PP_ITERATION()
BOOST_FUSION_GPU_ENABLED
- static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t))
+ static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param::type t))
{
return type(t0,
deque_keyed_values_impl<
diff --git a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp
index 6c09730d..efb2b90d 100644
--- a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp
+++ b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp
@@ -9,9 +9,8 @@
#define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901
#include
+#include
#include
-#include
-#include
#include
namespace boost { namespace fusion { namespace detail
diff --git a/include/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp b/include/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp
index d964cbe5..3938f9a4 100644
--- a/include/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp
+++ b/include/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp
@@ -31,7 +31,7 @@
#if N == 1
explicit
#endif
- map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg))
+ map(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param::type arg))
: data(BOOST_PP_ENUM_PARAMS(N, arg)) {}
#undef N