diff --git a/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp b/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp index 2f09719c..400f366e 100644 --- a/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp +++ b/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include @@ -29,13 +29,13 @@ namespace boost { namespace fusion struct apply { typedef typename remove_const::type seq_type; - typedef std::tuple_element element; + typedef typename std::tuple_element::type element; typedef typename - mpl::eval_if< + mpl::if_< is_const - , fusion::detail::cref_result - , fusion::detail::ref_result + , typename fusion::detail::cref_result::type + , typename fusion::detail::ref_result::type >::type type; diff --git a/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp b/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp index 4998e21d..082018a4 100644 --- a/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp +++ b/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include @@ -48,12 +48,12 @@ namespace boost { namespace fusion template struct deref { - typedef value_of element; + typedef typename value_of::type element; typedef typename - mpl::eval_if< + mpl::if_< is_const - , fusion::detail::cref_result - , fusion::detail::ref_result + , typename fusion::detail::cref_result::type + , typename fusion::detail::ref_result::type >::type type; diff --git a/include/boost/fusion/container/deque/cpp11_deque.hpp b/include/boost/fusion/container/deque/cpp11_deque.hpp index f4f645ae..23f3e9a8 100644 --- a/include/boost/fusion/container/deque/cpp11_deque.hpp +++ b/include/boost/fusion/container/deque/cpp11_deque.hpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -56,8 +57,8 @@ namespace boost { namespace fusion : base(seq) {} - explicit deque(typename add_reference::type>::type head - , typename add_reference::type>::type... tail) + explicit deque(typename detail::call_param::type head + , typename detail::call_param::type... tail) : base(detail::deque_keyed_values::call(head, tail...)) {} diff --git a/include/boost/fusion/container/deque/detail/keyed_element.hpp b/include/boost/fusion/container/deque/detail/keyed_element.hpp index e158096b..d1b219de 100644 --- a/include/boost/fusion/container/deque/detail/keyed_element.hpp +++ b/include/boost/fusion/container/deque/detail/keyed_element.hpp @@ -8,9 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330 -#include -#include - +#include #include #include @@ -39,10 +37,6 @@ namespace boost { namespace fusion { namespace detail { typedef Rest base; typedef fusion_sequence_tag tag; - typedef typename - add_reference::type>::type - const_value_type; - typedef typename add_reference::type value_type; using Rest::get; template @@ -63,17 +57,17 @@ namespace boost { namespace fusion { namespace detail return *this; } - const_value_type get(Key) const + typename cref_result::type get(Key) const { return value_; } - value_type get(Key) + typename ref_result::type get(Key) { return value_; } - keyed_element(const_value_type value, Rest const& rest) + keyed_element(typename call_param::type value, Rest const& rest) : Rest(rest), value_(value) {} diff --git a/include/boost/fusion/container/list/detail/at_impl.hpp b/include/boost/fusion/container/list/detail/at_impl.hpp index 145f8aa5..75746392 100644 --- a/include/boost/fusion/container/list/detail/at_impl.hpp +++ b/include/boost/fusion/container/list/detail/at_impl.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion @@ -93,15 +93,15 @@ namespace boost { namespace fusion template struct apply { - typedef detail::cons_deref< - typename detail::cons_advance::type> + typedef typename detail::cons_deref< + typename detail::cons_advance::type>::type element; typedef typename - mpl::eval_if< + mpl::if_< is_const - , detail::cref_result - , detail::ref_result + , typename detail::cref_result::type + , typename detail::ref_result::type >::type type; diff --git a/include/boost/fusion/container/map/detail/at_impl.hpp b/include/boost/fusion/container/map/detail/at_impl.hpp index f871bee0..025c1724 100644 --- a/include/boost/fusion/container/map/detail/at_impl.hpp +++ b/include/boost/fusion/container/map/detail/at_impl.hpp @@ -28,7 +28,9 @@ namespace boost { namespace fusion template struct apply { - typedef mpl::at element; + typedef typename + mpl::at::type + element; typedef typename detail::ref_result::type type; static type @@ -39,9 +41,11 @@ namespace boost { namespace fusion }; template - struct apply + struct apply { - typedef mpl::at element; + typedef typename + mpl::at::type + element; typedef typename detail::cref_result::type type; static type diff --git a/include/boost/fusion/container/map/detail/deref_data_impl.hpp b/include/boost/fusion/container/map/detail/deref_data_impl.hpp index 07087a39..8304c898 100644 --- a/include/boost/fusion/container/map/detail/deref_data_impl.hpp +++ b/include/boost/fusion/container/map/detail/deref_data_impl.hpp @@ -12,8 +12,7 @@ #include #include #include -#include -#include +#include namespace boost { namespace fusion { namespace extension { @@ -29,10 +28,10 @@ namespace boost { namespace fusion { namespace extension typedef typename result_of::value_of::type::second_type data; typedef typename - mpl::eval_if< + mpl::if_< is_const - , detail::cref_result > - , detail::ref_result > + , typename detail::cref_result::type + , typename detail::ref_result::type >::type type; diff --git a/include/boost/fusion/container/vector/detail/at_impl.hpp b/include/boost/fusion/container/vector/detail/at_impl.hpp index 0a006dc3..0017d9c8 100644 --- a/include/boost/fusion/container/vector/detail/at_impl.hpp +++ b/include/boost/fusion/container/vector/detail/at_impl.hpp @@ -27,7 +27,7 @@ namespace boost { namespace fusion template struct apply { - typedef mpl::at element; + typedef typename mpl::at::type element; typedef typename detail::ref_result::type type; static type @@ -40,7 +40,7 @@ namespace boost { namespace fusion template struct apply { - typedef mpl::at element; + typedef typename mpl::at::type element; typedef typename detail::cref_result::type type; static type diff --git a/include/boost/fusion/container/vector/detail/deref_impl.hpp b/include/boost/fusion/container/vector/detail/deref_impl.hpp index 1d9ac4a8..8c5fb942 100644 --- a/include/boost/fusion/container/vector/detail/deref_impl.hpp +++ b/include/boost/fusion/container/vector/detail/deref_impl.hpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace boost { namespace fusion { @@ -29,14 +30,14 @@ namespace boost { namespace fusion typedef typename Iterator::vector vector; typedef typename Iterator::index index; typedef typename mpl::at< - typename vector::types, index> + typename vector::types, index>::type element; typedef typename - mpl::eval_if< + mpl::if_< is_const - , fusion::detail::cref_result - , fusion::detail::ref_result + , typename fusion::detail::cref_result::type + , typename fusion::detail::ref_result::type >::type type; diff --git a/include/boost/fusion/support/detail/access.hpp b/include/boost/fusion/support/detail/access.hpp index 03c9c319..cb00c308 100644 --- a/include/boost/fusion/support/detail/access.hpp +++ b/include/boost/fusion/support/detail/access.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_ACCESS_04182005_0737) @@ -15,16 +15,16 @@ namespace boost { namespace fusion { namespace detail template struct ref_result { - typedef typename add_reference::type type; + typedef typename add_reference::type type; }; template struct cref_result { - typedef typename + typedef typename add_reference< - typename add_const::type - >::type + typename add_const::type + >::type type; }; @@ -35,7 +35,7 @@ namespace boost { namespace fusion { namespace detail }; template - struct call_param + struct call_param { typedef T& type; };