diff --git a/include/boost/fusion/sequence/container/deque/deque.hpp b/include/boost/fusion/sequence/container/deque/deque.hpp index 2dde4d81..eb83f35e 100644 --- a/include/boost/fusion/sequence/container/deque/deque.hpp +++ b/include/boost/fusion/sequence/container/deque/deque.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -35,12 +36,9 @@ namespace boost { namespace fusion { struct deque_tag; struct void_; - template - struct deque; - template struct deque - : + : detail::deque_keyed_values::type, sequence_base > { @@ -54,7 +52,7 @@ namespace boost { namespace fusion { #include - deque() + deque() {} explicit deque(typename add_reference::type>::type t0) diff --git a/include/boost/fusion/sequence/container/deque/deque_fwd.hpp b/include/boost/fusion/sequence/container/deque/deque_fwd.hpp new file mode 100644 index 00000000..9e5168a7 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/deque_fwd.hpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2005-2007 Joel de Guzman + Copyright (c) 2005-2007 Dan Marsden + + Use, modification and distribution is subject to 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_DEQUE_FORWARD_02092007_0749) +#define FUSION_DEQUE_FORWARD_02092007_0749 + +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + template< + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_DEQUE_SIZE, typename T, void_)> + struct deque; +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp index c257844b..77857c12 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp @@ -8,56 +8,74 @@ #if !defined(FUSION_AS_10022005_1442) #define FUSION_AS_10022005_1442 -#include - -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { - template - struct as_impl; - - template <> - struct as_impl + namespace result_of { template - struct apply : result_of::as_list {}; - }; + struct as_list; - template <> - struct as_impl - { template - struct apply : result_of::as_map {}; - }; + struct as_map; - template <> - struct as_impl - { template - struct apply : result_of::as_set {}; - }; + struct as_set; - template <> - struct as_impl - { template - struct apply : result_of::as_vector {}; - }; + struct as_vector; - template<> - struct as_impl - { template - struct apply : result_of::as_deque {}; - }; + struct as_deque; + } - template - struct as + namespace detail { - typedef typename - as_impl::template apply::type - type; - }; + template + struct as_impl; -}}} + template <> + struct as_impl + { + template + struct apply : result_of::as_list {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_map {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_set {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_vector {}; + }; + + template<> + struct as_impl + { + template + struct apply : result_of::as_deque {}; + }; + + template + struct as + { + typedef typename + as_impl::template apply::type + type; + }; + } +}} #endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp index 03cacb6a..fc2a1154 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp @@ -8,25 +8,40 @@ #if !defined(FUSION_CLEAR_10022005_1442) #define FUSION_CLEAR_10022005_1442 -#include +#include +#include +#include +#include +#include -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { - template - struct clear; + struct cons_tag; + struct map_tag; + struct set_tag; + struct vector_tag; + struct deque_tag; - template <> - struct clear : mpl::identity > {}; + namespace detail + { + template + struct clear; - template <> - struct clear : mpl::identity > {}; + template <> + struct clear : mpl::identity > {}; - template <> - struct clear : mpl::identity > {}; + template <> + struct clear : mpl::identity > {}; - template <> - struct clear : mpl::identity > {}; + template <> + struct clear : mpl::identity > {}; -}}} + template <> + struct clear : mpl::identity > {}; + + template <> + struct clear : mpl::identity > {}; + } +}} #endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp index 3da4e396..5d3b5281 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp @@ -68,7 +68,8 @@ namespace boost { namespace fusion return i.f(*i.first1, *i.first2); } }; - }; } + }; + } }} #endif diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index c22ac8c3..73503955 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -62,7 +62,7 @@ namespace boost { namespace fusion { template struct category_of - : extension::category_of_impl::type>:: + : extension::category_of_impl::type>:: template apply {}; @@ -70,42 +70,42 @@ namespace boost { namespace fusion struct is_associative : is_base_of< associative_sequence_tag - , typename category_of::type> + , typename category_of::type> {}; template struct is_incrementable : is_base_of< incrementable_traversal_tag - , typename category_of::type> + , typename category_of::type> {}; template struct is_single_pass : is_base_of< single_pass_traversal_tag - , typename category_of::type> + , typename category_of::type> {}; - + template struct is_forward : is_base_of< forward_traversal_tag - , typename category_of::type> - {}; - + , typename category_of::type> + {}; + template struct is_bidirectional : is_base_of< bidirectional_traversal_tag - , typename category_of::type> - {}; - + , typename category_of::type> + {}; + template struct is_random_access : is_base_of< random_access_traversal_tag - , typename category_of::type> + , typename category_of::type> {}; } }} diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp index 12818319..3f97049d 100644 --- a/include/boost/fusion/support/is_view.hpp +++ b/include/boost/fusion/support/is_view.hpp @@ -11,7 +11,7 @@ #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; @@ -54,8 +54,8 @@ namespace boost { namespace fusion namespace traits { template - struct is_view : - extension::is_view_impl::type>:: + struct is_view : + extension::is_view_impl::type>:: template apply::type {}; }