diff options
Diffstat (limited to 'boost/fusion/container/deque/detail/end_impl.hpp')
-rw-r--r-- | boost/fusion/container/deque/detail/end_impl.hpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/boost/fusion/container/deque/detail/end_impl.hpp b/boost/fusion/container/deque/detail/end_impl.hpp index 0727e00f54..8037689abf 100644 --- a/boost/fusion/container/deque/detail/end_impl.hpp +++ b/boost/fusion/container/deque/detail/end_impl.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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(BOOST_FUSION_DEQUE_END_IMPL_09122006_2034) @@ -13,27 +13,29 @@ #include <boost/mpl/equal_to.hpp> #include <boost/mpl/if.hpp> -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct deque_tag; - namespace extension + namespace extension { template<typename T> struct end_impl; - + template<> struct end_impl<deque_tag> { template<typename Sequence> struct apply { - typedef typename mpl::if_< - mpl::equal_to<typename Sequence::next_down, typename Sequence::next_up>, - deque_iterator<Sequence, 0>, - deque_iterator< - Sequence, Sequence::next_up::value> >::type type; - + typedef typename + mpl::if_c< + (Sequence::next_down::value == Sequence::next_up::value) + , deque_iterator<Sequence, 0> + , deque_iterator<Sequence, Sequence::next_up::value> + >::type + type; + static type call(Sequence& seq) { return type(seq); |